使用MVC SimpleMembership分配角色

12
我正在通过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创建的表连接?
2个回答

13
你需要使用Roles API来操作 Roles。下面的代码应该能起作用:
if (!Roles.RoleExists("Administrator"))
    Roles.CreateRole("Administrator");

if (!Roles.GetRolesForUser(model.UserName).Contains("Administrator"))
    Roles.AddUsersToRole(new[] { model.UserName }, "Administrator");

最后一行有一个错别字,请删除括号。 :) - Abou-Emish

2

2
不确定为什么这个已经被更新了,它并没有回答问题。 - BenjaminPaul

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接