ASP.NET Core WebApi EF: добавить роль пользователю - PullRequest
0 голосов
/ 18 мая 2018

Когда я добавляю роль своему пользователю (код ниже), она не добавляется в таблицу 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;
}
...