Jus*_*per 12 c# asp.net-membership membership-provider asp.net-mvc-3
我正在通过Nuget在MVC3中尝试"SimpleMembership",并已下载了样本.问题是我无法弄清楚如何将角色分配给特定用户.
在标准MVC成员资格中,您可以使用以下内容:
Roles.AddUserToRole(model.UserName, "StandardUser");
Run Code Online (Sandbox Code Playgroud)
但是,SimpleMembership似乎只有一种方法可以暴露角色(除非我是愚蠢的!)
public void RequireRoles(params string[] roles)
{
WebSecurity.RequireRoles(roles);
}
Run Code Online (Sandbox Code Playgroud)
必须有一个简单的方法,因为下表是作为这个nuget包的一部分创建的:
-TABLE: webpages_Roles
RoleId , RoleName
Run Code Online (Sandbox Code Playgroud)
这有点令人困惑,但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);
}
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
此软件包是否使用内置的角色提供程序?如果是这样,它如何与SimpleMembership创建的表挂钩
Ben*_*ley 13
您需要使用Roles API与角色进行交互.像下面这样的东西应该工作:
if (!Roles.RoleExists("Administrator"))
Roles.CreateRole("Administrator");
if (!Roles.GetRolesForUser(model.UserName).Contains("Administrator"))
Roles.AddUsersToRole(new[] { model.UserName }, "Administrator");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
17758 次 |
| 最近记录: |