5

Tôi đã đăng this question khoảng 8 vài tháng trước đây. Câu trả lời được chấp nhận chạm vào một số điều bạn sẽ bỏ lỡ bằng cách không chơi theo các quy tắc của nhà cung cấp mặc định. Ví dụ: nếu bạn không sử dụng RoleProvider tùy chỉnh kế thừa từ RoleProvider, bạn sẽ mất khả năng sử dụng các phím tắt nhanh như User.IsInRole(). Câu trả lời đề cập đến những thứ như thế này là "hệ thống ống nước tích hợp." Những gì tôi muốn biết là nơi tôi có thể tìm thấy một danh sách đầy đủ các công cụ dựa trên "hệ thống ống nước tích hợp" này, và một cái gì đó cho thấy những phương pháp mà họ đang gọi là đằng sau hậu trường.Lý do tích cực dưới mức nào để sử dụng nhà cung cấp thành viên mặc định hoặc nhà cung cấp tùy chỉnh kế thừa?

Ví dụ, HttpContext.Current.User.IsInRole() được (tôi giả sử) đề cập đến và gọi overriden "IsUserInRole()" phương pháp của tôi trong tùy chỉnh của tôi RoleProvider, nhưng tôi muốn xem tài liệu, nơi nó được quy định rõ ràng rằng HttpContext.Current.User.IsInRole() là thực sự gọi IsUserInRole(), cho tất cả các phương pháp như vậy cho tất cả các nhà cung cấp.

Tôi hiểu rằng nó phải là loại hiển nhiên rồi (IsInRole() và IsUserInRole() rất giống nhau), nhưng động cơ của tôi để hỏi là xem và tìm hiểu về các loại phím tắt khác có sẵn mà tôi ' m thậm chí không nhận thức được. Tôi có cảm giác rằng tôi đã tái phát minh ra bánh xe nhiều lần, và tôi thậm chí không biết nó.

Trả lời

0

Chúng thực sự không giống nhau, nhưng bất kỳ nhà cung cấp vai trò nào bạn sử dụng đều có thể điền bộ sưu tập vai trò của người dùng hiện tại để chứa tất cả vai trò của nhà cung cấp.

HttpContext.Current.User là một IPrincipal mà bạn có thể đọc về ở đây: http://msdn.microsoft.com/en-us/library/system.security.principal.aspx

Đây là một quy ước NET cho Identity trong bất kỳ ứng dụng .NET (bao gồm ASP.NET tất nhiên). Cách duy nhất bạn có thể chắc chắn rằng việc thực hiện IPrincipal bạn đang sử dụng đang gọi chức năng tương tự của RoleProvider của bạn là bằng cách sử dụng một trong đó thực sự đi kèm với nhà cung cấp của bạn.

Nhà cung cấp vai trò được khởi tạo cho mỗi đối tượng httpApplication (http://msdn.microsoft.com/en-us/library/8fw7xh74.aspx) và có sẵn để sử dụng bởi việc thực hiện chính.

Xem phần Nhận xét của bài viết MSDN này: http://msdn.microsoft.com/en-us/library/bb340078.aspx Việc gọi số IsUserInRole của nhà cung cấp vai trò theo số IsInRole của Hiệu trưởng hoàn toàn phụ thuộc vào việc thực hiện nhà cung cấp chính của bạn.