0

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

令我沮丧的是,它们都没有涵盖如何将用户添加到特定角色组。如果我想说,对特定域下的每个人进行身份验证.. 说所有使用地址 @example.ca 的谷歌登录

有谁知道如何做到这一点?或者甚至在哪里明确输入管理员电子邮件以将它们添加到特定角色组?

4

1 回答 1

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 });
        }
    }
}

在此处查看源代码和更多信息

如果我想说,对特定域下的每个人进行身份验证.. 说所有使用地址 @example.ca 的谷歌登录

同样,这个问题与 Blazor 无关。这是根据您上面提到的要求使用基于策略的身份验证的候选者。请参阅文档如何实现这一点,如果需要,请毫不犹豫地寻求帮助。

希望这可以帮助...

于 2019-10-31T00:36:18.903 回答