Аутентификация на основе ролей Blazor - PullRequest
0 голосов
/ 31 октября 2019

В сети много ресурсов для использования ролей для аутентификации пользователей в блаженном приложении. (пример: https://visualstudiomagazine.com/articles/2019/10/25/authorizing-users-in-blazor.aspx)

Что меня расстраивает, так это то, что ни один из них не описывает, как добавлять пользователей в определенные группы ролей. Если я хочу сказать, аутентифицируйте всех в определенном домене ... произнесите все входы в Google с помощьюaddress @ example.ca

Кто-нибудь знает, как это сделать? Или даже где явно набирать электронные письма администратора, чтобы добавить их в определенную группу ролей?

1 Ответ

1 голос
/ 31 октября 2019

Что меня расстраивает, так это то, что никто из них не описывает, как добавлять пользователей в определенные группы ролей.

Этот вопрос не имеет ничего общего с 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. Это кандидат для использования аутентификации на основе политик с требованием, которое вы упомянули выше. Посмотрите документы, как это осуществить, и не стесняйтесь обращаться за помощью, если это необходимо.

Надеюсь, это поможет ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...