繁体   English   中英

将用户添加到用户名是电子邮件地址的角色

[英]Add user to role where username is email address

调用下面的代码可将当前经过身份验证的用户分配给名为Admin的角色。 已经使用正确配置的电子邮件地址创建了该用户,我可以对其进行身份验证。 但是,我想使用下面的演示代码将用户添加到角色。

public ActionResult AddUserToRole()
{
    var userId = User.Identity.GetUserId();
    using (var userManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext())))
    {
        IdentityResult result = userManager.AddToRole(userId, "Admin");
     }
     return RedirectToAction("Index");
}

使用新MVC 5应用程序中的模板代码创建了用户。 模板代码要求输入用户名的电子邮件地址。 但是, AddToRole行的结果返回AddToRole result.Succeeded = false ,错误为

用户名jason@xxxxxxx.xx.xx无效,只能包含字母或数字。

角色调用为何应用验证程序,而创建用户的调用却没有应用? 全部都是模板代码。

现在,考虑到所有这些都是模板代码,我是否需要丢失某些内容还是需要修改模板,以使用户提供的用户名不是电子邮件地址。

非常感谢。

我有同样的问题。 要解决此问题,请在调用AddToRole()之前添加以下行:

        userManager.UserValidator = new UserValidator<ApplicationUser>(userManager) { AllowOnlyAlphanumericUserNames = false };

也许有人知道一个更优雅的解决方案,但这对我有用,所以我没有进一步研究!

高温超导

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM