Tôi đang làm việc để thêm ủy quyền cho một ứng dụng ASP.NET MVC và đã chạy vào một khối đường. Cuối cùng tôi đã có thể nhận được nhà cung cấp tư cách thành viên tùy chỉnh của chúng tôi có dây và nhận được xác thực làm việc cho Ứng dụng. Bây giờ, như mong đợi, nếu tôi thêm thuộc tính [Authorize] vào bộ điều khiển của tôi, người dùng phải được xác thực để xem trang. Tôi cũng đã thử nghiệm thành công [Ủy quyền (Người dùng = "{tên người dùng}")] cũng hoạt động để hạn chế trang đối với người dùng cụ thể đó.HttpContext.Current.User.IsInRole (roleName) luôn trả về false
Vấn đề là [Ủy quyền (Vai trò = "{RoleName}")] dường như không hoạt động như tôi mong đợi. Nếu tôi thêm thuộc tính đó vào bộ điều khiển, bất cứ khi nào tôi cố truy cập trang tương ứng, tôi sẽ được chuyển hướng đến trang đăng nhập của chúng tôi. Đây là những gì tôi mong đợi sẽ xảy ra nếu người dùng không có vai trò cần thiết, nhưng nó đang xảy ra ngay cả khi người dùng có vai trò đó. Tôi đã kiểm tra cả User.IsInRole ("{roleName}") và HttpContext.Current.User.IsInRole ("{roleName}") trong một View, một Controller và một phương thức của trình trợ giúp và điều này luôn trả về 'False'.
Tôi đã xác minh rằng người dùng mà tôi đang làm việc có vai trò mà tôi đang cố gắng ủy quyền. Tôi cũng đã thử nghiệm những người dùng này trong một ứng dụng WebForms hạn chế quyền truy cập trang bởi các vai trò giống nhau và nó hoạt động tốt. Tôi nghĩ rằng tôi có thứ gì đó sai ở đâu đó hoặc thiếu cái gì đó đơn giản, nhưng sau khi tìm kiếm tất cả các buổi sáng, tôi không tìm thấy bất cứ thứ gì giúp tôi gần hơn với giải pháp, vì vậy tôi hy vọng ai đó ở đây có thể giúp tôi.
Xin chào, bạn có thể chỉnh sửa câu trả lời của mình để cho chúng tôi biết cấu hình - có thể giúp những người khác trong tương lai. – sirrocco
sirrocco - cài đặt cấu hình cụ thể cho việc triển khai và môi trường của chúng tôi để chúng không được sử dụng cho bất kỳ ai khác. – Hamman359
Nhận xét của bạn nhắc tôi kiểm tra lại web.config và tôi phát hiện ra rằng nút roleManager đã bật = "false". Tôi chỉ muốn mọi người biết rằng nếu nó bị vô hiệu hóa nó trả về false cho IsInRole như trái ngược với việc trả lại một ngoại lệ của một số loại như bạn có thể mong đợi. –