使用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