自定义 RoleProvider 是否可以与 ASP.NET MVC 中的操作方法上的 [Authorize] 配合使用?
我正在制作自定义 MembershipProvider 和 RoleProvider。
我有包含 Roles 和 UsersInRoles 的数据库表,并且使用 LINQ-to-SQL 创建表的对象。
在操作方法上调用 [Authorize] 时,它可以与我的自定义 RoleProvider 一起使用吗? 它如何知道用户是否已通过身份验证以及用户是否处于适当的角色?
I'm making a custom MembershipProvider and RoleProvider.
I have database tables with Roles and UsersInRoles and I use LINQ-to-SQL to create objects of the tables.
When invoking [Authorize] on an action method, will it work with my custom RoleProvider?
How does it know if the user is authenticated and if the user is in the appropriate role?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
答案是肯定的。 AuthorizeAttribute 在内部使用 User.IsUserInRole() 方法。但您必须将自定义提供程序设置为默认提供程序。
场景
启用角色管理后,RoleManagerModule 会将 HttpContext.User 值替换为 RolePrincipal 的新实例。 RolePrincipal 也在内部使用 Roles.IsUserInRole。
The answer is yes. The AuthorizeAttribute uses User.IsUserInRole() method internally. But you have to set your custom provider as default.
Scenario
When the role management is enabled, the RoleManagerModule replaces the HttpContext.User value with a new instance of RolePrincipal. The RolePrincipal uses Roles.IsUserInRole internally as well.