基于Blazor角色的身份验证

时间:2019-10-30 23:06:14

标签: c# authentication

在线上有大量资源,可用于使用角色对Blazor应用程序中的用户进行身份验证。 (示例:https://visualstudiomagazine.com/articles/2019/10/25/authorizing-users-in-blazor.aspx

让我感到沮丧的是,它们都没有涉及如何将用户添加到特定角色组。如果我想说,请对特定域下的每个人进行身份验证。说所有Google登录信息,其地址为@ example.ca

有人知道该怎么做吗?甚至在哪里可以明确键入管理员电子邮件以将其添加到特定的角色组?

1 个答案:

答案 0 :(得分:1)

  

让我感到沮丧的是,他们都没有涵盖如何将用户添加到   特定角色组。

这个问题与Blazor无关。

以下是将注册用户添加到角色的方法:

[Route("api/[controller]")]
    [ApiController]
    public class AccountsController : ControllerBase
    {
        private static UserModel LoggedOutUser = new UserModel { IsAuthenticated = false };

        private readonly UserManager<IdentityUser> _userManager;

        public AccountsController(UserManager<IdentityUser> userManager)
        {
            _userManager = userManager;
        }

        [HttpPost]
        public async Task<IActionResult> Post([FromBody]RegisterModel model)
        {
            var newUser = new IdentityUser { UserName = model.Email, Email = model.Email };

            var result = await _userManager.CreateAsync(newUser, model.Password);

            if (!result.Succeeded)
            {
                var errors = result.Errors.Select(x => x.Description);

                return BadRequest(new RegisterResult { Successful = false, Errors = errors });
            }

            // Add all new users to the User role
            await _userManager.AddToRoleAsync(newUser, "User");

            // Add new users whose email starts with 'admin' to the Admin role
            if (newUser.Email.StartsWith("admin"))
            {
                await _userManager.AddToRoleAsync(newUser, "Admin");
            }

            return Ok(new RegisterResult { Successful = true });
        }
    }
}

查看源代码和更多here

  

如果我想说,请对特定域下的每个人进行身份验证。   说出所有Google登录信息,其地址为@ example.ca

同样,这个问题与Blazor无关。这是将基于策略的身份验证与您上面提到的要求结合使用的候选人。请参阅文档,了解如何实现此目的,如有需要,请随时寻求帮助。

希望这对您有帮助...