RoleProvider需要使用[Authorize(Roles =“Admin”)]吗?

时间:2013-09-02 22:45:42

标签: asp.net asp.net-membership roleprovider

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

非常感谢。

2 个答案:

答案 0 :(得分:1)

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

查看使用Entity Framework Code First的新ASP.NET Universal Providers

(注意:aspnet_regsql.exe生成的旧ASP.Net成员资格提供程序使用架构和存储过程。我不建议使用它。)

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

public override string[] GetRolesForUser(string username)

更新了评论

  

如果我必须使用MembershipProvider,或者我可以逃脱   使用RoleProvider在我的上使用[Authorize(Roles =“Admin”)]   控制器动作

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

  

根据此post,您无法使用Universal自定义[map]   提供者。

最初的问题是关于重命名您无法执行的成员资格表(除非您创建自定义成员资格提供程序和自定义角色提供程序)。但是,您可以在表和成员资格表之间创建关系。此外,您可以在商店过程中包含成员资格表。

答案 1 :(得分:0)