【问题标题】:Assigning Roles with MVC SimpleMembership使用 MVC SimpleMembership 分配角色
【发布时间】:2012-07-27 12:48:23
【问题描述】:

我正在通过 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 创建的表挂钩

【问题讨论】:

    标签: c# asp.net-mvc-3 asp.net-membership membership-provider


    【解决方案1】:

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

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

    【讨论】:

    • 有错别字,去掉最后一行的花括号:)
    【解决方案2】:
    WebSecurity.InitializeDatabaseFile("SecurityDemo.sdf", "Users", "UserID", "Username", true);
    

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

    【讨论】:

    • 不确定为什么要更新,它没有回答问题。
    猜你喜欢
    • 1970-01-01
    • 2020-10-16
    • 2012-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-02-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多