【问题标题】:Identity Membership roles ASP.NET 4.5 MVC Adding Claims based Roles身份成员角色 ASP.NET 4.5 MVC 添加基于声明的角色
【发布时间】:2013-08-19 05:10:16
【问题描述】:

我已使用https://github.com/rustd/AspnetIdentitySample 中给出的示例来创建自定义用户配置文件数据。

但是,我不确定如何在注册时为新注册的用户分配角色。看起来它使用 .net 4.5 基于声明的角色。它还使用 Code First - 迁移并创建必要的成员表,如角色、用户角色。

我希望向 Roles 表添加一个新角色,并将该角色分配给一个新用户,并在 UserRoles 表中添加一个条目。

非常感谢您的帮助。

【问题讨论】:

    标签: entity-framework-4 code-first claims-based-identity asp.net-mvc-5


    【解决方案1】:

    例如,如果你想创建角色并添加新用户,你可以修改你的注册方法如下:

    [HttpPost]
            [AllowAnonymous]
            [ValidateAntiForgeryToken]
            public ActionResult Register(RegisterModel model)
            {
                if (ModelState.IsValid)
                {
                    try
                    {
                        WebSecurity.CreateUserAndAccount(model.UserName, model.Password);
                        WebSecurity.Login(model.UserName, model.Password);
    
                            Roles.CreateRole("Role A");// add "Role A"
                            Roles.AddUserToRole(model.UserName, "Role A"); // user in role A 
    
    
                        return RedirectToAction("Index", "Home");
                    }
                    catch (MembershipCreateUserException e)
                    {
                        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                    }
                }
                return View(model);
            }
    

    【讨论】:

    • 早些时候尝试过。没有帮助。给出“角色管理器功能尚未启用”角色管理器功能尚未启用。说明:在执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其来源的更多信息代码。异常详细信息:System.Configuration.Provider.ProviderException:角色管理器功能尚未启用。
    • @user2690280 只需将 添加到 web.config
    • 尝试添加 但也无济于事。如果您查看示例项目 (github.com/rustd/AspnetIdentitySample),则会有一个单独的成员数据库来处理用户。所以必须有会员提供者的东西。
    • @user2690280 如果您的数据库中仍然没有 asp 成员表,请执行以下操作:将 Aspnet 成员表添加到您的数据库。导航到向导(C:\Windows\Microsoft.NET\Framework[framework version]\aspnet_regsql)并启动它。它将运行特殊的向导,这有助于添加表格。
    【解决方案2】:

    试试 IdentityConfig.Roles.AddUserToRole?确保角色位于 DefaultConnection 的 Role 表中。我假设您正在研究他们在今年夏天 BUILD 之前在该会议上发布的演示?安德烈的答案依赖于旧的会员系统,我相信使用网络配置实用程序?

    【讨论】:

      【解决方案3】:

      var rm = new RoleManager(new RoleStore(newApplicationDbContext()));

      rm.Create(new IdentityRole("Admin"));

      rm.Create(new IdentityRole("Finance"));

      UserManager.AddToRole(user.Id, "Admin");

      【讨论】:

        猜你喜欢
        • 2015-04-09
        • 2016-03-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-02-19
        • 2020-09-23
        • 2018-02-10
        相关资源
        最近更新 更多