使用MVC SimpleMembership分配角色

我正在通过Nuget在MVC3中尝试“SimpleMembership”,并已经下载了样本。 问题是我无法弄清楚如何将角色分配给特定用户。

在标准MVC成员资格中,您可以使用以下内容:

Roles.AddUserToRole(model.UserName, "StandardUser"); 

但是,SimpleMembership似乎只有一种方法可以暴露角色(除非我是愚蠢的!)

 public void RequireRoles(params string[] roles) { WebSecurity.RequireRoles(roles); } 

必须有一个简单的方法,因为下表是作为这个nuget包的一部分创建的:

 -TABLE: webpages_Roles RoleId , RoleName 

这有点令人困惑,但在App_Start/SimpleMembershipMvc3.cs有以下内容:

 Roles.Enabled = true; RoleProvider provider3 = Roles.Providers["AspNetSqlRoleProvider"]; if (provider3 != null) { RoleProvider provider6 = provider3; SimpleRoleProvider provider4 = CreateDefaultSimpleRoleProvider("AspNetSqlRoleProvider", provider6); Roles.Providers.Remove("AspNetSqlRoleProvider"); Roles.Providers.Add(provider4); } 

SimpleRoleProvider函数

  private static SimpleRoleProvider CreateDefaultSimpleRoleProvider(string name, RoleProvider currentDefault) { RoleProvider previousProvider = currentDefault; SimpleRoleProvider provider = new SimpleRoleProvider(previousProvider); NameValueCollection config = new NameValueCollection(); provider.Initialize(name, config); return provider; } 

此软件包是否使用内置的角色提供程序? 如果是这样,它如何与SimpleMembership创建的表挂钩

  • 简单会员GIT
  • Nuget包
  • Nuget包样品

您需要使用Roles API与角色进行交互。 像下面这样的东西应该工作:

 if (!Roles.RoleExists("Administrator")) Roles.CreateRole("Administrator"); if (!Roles.GetRolesForUser(model.UserName).Contains("Administrator")) Roles.AddUsersToRole(new[] { model.UserName }, "Administrator"); 
 WebSecurity.InitializeDatabaseFile("SecurityDemo.sdf", "Users", "UserID", "Username", true); 

浏览这个网站。 它可能会有所帮助。 http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx