与MVC SimpleMembership分配角色(Assigning Roles with MVC

2019-07-30 16:06发布

我在通过的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
  • 掘金包
  • 掘金包装样品

Answer 1:

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

if (!Roles.RoleExists("Administrator"))
    Roles.CreateRole("Administrator");

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


Answer 2:

WebSecurity.InitializeDatabaseFile("SecurityDemo.sdf", "Users", "UserID", "Username", true);

看看这个网站。 这可能是一些帮助。 http://blog.osbornm.com/archive/2010/07/21/using-simplemembership-with-asp.net-webpages.aspx



文章来源: Assigning Roles with MVC SimpleMembership