Когда я добавляю роль своему пользователю (код ниже), она не добавляется в таблицу AspNetRoles
, но должна ли она быть?
var userResult = await _userManager.CreateAsync (admin, AdminPassword);
var roleResult = await _userManager.AddToRoleAsync (admin, Roles.AdminRole);
И когда я присоединяю Авторизация атрибут для метода, подобный так: (Roles = Roles.AdminRole)
, он говорит, что у меня нет разрешения: 403 Запрещено.
Также, когда я пытаюсь получить роли пользователя, он возвращает пустой массив:
return await _userManager.GetRolesAsync(user);
Вот мой метод API:
// Host/api/roles/createrole
[Authorize(Roles = Roles.AdminRole)]
[HttpPost]
public async Task<IActionResult> CreateRole([FromBody] CreateRoleViewModel model)
{
if (!ModelState.IsValid)
return BadRequest();
var result = await _roleManager.CreateAsync(new IdentityRole(model.RoleName));
if (!result.Succeeded)
return BadRequest(result);
return Ok();
}
Вот моя инициализация:
public void Initialize()
{
InitializeRoles();
InitializeAdmin();
}
#region Private Methods
private void InitializeRoles()
{
if (_roleManager.Roles.Any())
return;
var role = new IdentityRole(Roles.AdminRole);
var roleResult = _roleManager.CreateAsync(role).Result;
}
private void InitializeAdmin()
{
if (_userManager.Users.Any())
return;
var admin = new User
{
UserName = AdminUsername,
Email = AdminUsername,
};
var userResult = _userManager.CreateAsync(admin, AdminPassword).Result;
var roleResult = _userManager.AddToRoleAsync(admin, Roles.AdminRole).Result;
}