2

我想在我的 ASP.net MVC 控制器操作上使用 [Authorize(Roles = "Admin")] 属性。我是否需要配置角色提供程序(开箱即用或自定义)才能执行此操作?如果我这样做了,并且我想使用自定义角色提供程序,那么必须实现哪些方法才能使用 AuthorizeAttribute?

非常感谢。

4

2 回答 2

1

是的,您需要角色提供者才能使用[Authorize(Roles = "Admin")]

看看使用实体框架代码优先的新ASP.NET 通用提供程序。

(注:aspnet_regsql.exe 生成的旧 ASP.Net Membership Provider 使用的是 schema 和 store 过程,我不推荐使用它。)

如果要实现自定义角色提供者,至少需要覆盖以下方法(其他方法是可选的) -

public override string[] GetRolesForUser(string username)

更新评论

如果我必须使用 MembershipProvider 或者我可以只使用 RoleProvider 在我的控制器操作上使用 [Authorize(Roles = "Admin")]

通常,如果要使用 RoleProvider,则需要使用 MembershipProvider。否则,您将需要创建 IPrincipal 对象并将用户的授权角色添加到该对象。

根据这篇文章,您无法使用 Universal Providers 自定义 [map]。

最初的问题是关于重命名您不能做的成员资格表(除非您创建Custom Membership Provider 和 Custom Role Provider)。但是,您可以在表和成员表之间创建关系。此外,您可以在存储过程中包含成员资格表。

于 2013-09-03T14:54:49.387 回答
0

是的,您需要将成员资格/角色提供者配置为使用 Authorize(Roles = "Admin")。当您创建 asp.net mvc 项目时,它会自动为您配置。如果您使用工具 aspnet_regsql.exe,它将创建会员数据库。以下链接可能会有所帮助

http://www.asp.net/mvc/tutorials/mvc-music-store/mvc-music-store-part-7

实现自定义角色提供者有点困难,并且涉及大量编码。请看以下链接

http://www.brianlegg.com/post/2011/05/09/Implementing-your-own-RoleProvider-and-MembershipProvider-in-MVC-3.aspx

http://www.mattwrock.com/post/2009/10/14/Implementing-custom-Membership-Provider-and-Role-Provider-for-Authinticating-ASPNET-MVC-Applications.aspx

http://bojanskr.blogspot.com.au/2011/12/custom-membership-provider.html http://bojanskr.blogspot.com.au/2011/12/custom-role-provider.html http:// bojanskr.blogspot.com.au/2011/12/syntaxhighlighter.html http://msdn.microsoft.com/en-us/library/6tc47t75.aspx

于 2013-09-03T01:12:51.637 回答