【问题标题】:ASP.Net UserManager AddRoleTo not workingASP.Net UserManager AddRoleTo 不起作用
【发布时间】:2018-03-24 02:21:07
【问题描述】:

在 VS 2015 中,我创建了一个带有默认身份验证内容的小型 MVC 应用程序。 我只更改了帐户控制器注册操作中的代码:

var context = new ApplicationDbContext();
if (ModelState.IsValid)
{
    var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
    var result = await UserManager.CreateAsync(user, model.Password);

    var roleStore = new RoleStore<IdentityRole>(context);
    var roleManager = new RoleManager<IdentityRole>(roleStore);

    var userStore = new UserStore<ApplicationUser>(context);
    var userManager = new UserManager<ApplicationUser>(userStore);

    if (!roleManager.RoleExists("Administrator"))
    {
        roleManager.Create(new IdentityRole("Administrator"));
    }
    if (!roleManager.RoleExists("User"))
    {
        roleManager.Create(new IdentityRole("User"));
    }

    if (context.Users.Count() == 1)
    {
        userManager.AddToRole(user.Id, "Administrator");
    } else
    {
        try
        {
            userManager.AddToRole(user.Id, "User");
        }
        catch (Exception ex)
        {
            throw new Exception("Error assigning role: " + ex.Message);
        }
    }

第一个注册用户成为“管理员”。虽然 "userManager.AddToRole(user.Id, "User");"不会引发异常,没有将以下注册用户分配给该角色(检查了表格以及每个授权(角色...)。 我不知道这里出了什么问题。

【问题讨论】:

    标签: c# asp.net-mvc role usermanager


    【解决方案1】:

    我想通了。我使用了用户名中带有“+”的通用电子邮件地址,例如用户+01@mydomain.com。这在注册时不会造成麻烦,并且在尝试/捕获 AddRoleTo 方法时不会引发异常,但是在 AddRoleTo 的结果堆栈中会出现一个错误,即用户名只允许使用字符和数字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-08-13
      • 1970-01-01
      • 2022-01-12
      • 1970-01-01
      • 2013-03-14
      • 2010-10-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多