基于Blazor角色的身份验证

问题描述 投票:0回答:1

[在线上有很多资源可用于使用角色来验证Blazor应用程序中的用户。 (例如:https://visualstudiomagazine.com/articles/2019/10/25/authorizing-users-in-blazor.aspx

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

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

c# authentication
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 });
        }
    }
}

查看源代码和更多here

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

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

希望这有帮助...

© www.soinside.com 2019 - 2024. All rights reserved.