Я новичок ASP.NET Core. Я застрял в роли, претензии и пользовательских отношениях.Роль Идентификации, претензии и пользователь ASP.NET
У меня есть пользователь Ben, пользователь принадлежит к Admin роль. Администратор Роль имеет претензии View-pages и Редактировать-страницу в базе данных.
Но я не могу получить претензии и роли быть принадлежащие этому пользователю:
(смотрите комментарий в коде)
var user = await _userManager.FindByNameAsync(applicationUser.UserName);
if(user != null) {
var userClaims = await _userManager.GetClaimsAsync(user); // empty, WHY ?
var userRoles = await _userManager.GetRolesAsync(user); // ['admin']
var adminRole = DbContext.Roles.FirstOrDefault(x => x.Name == "Admin");
IList<Claim> adminClaims;
if(adminRole != null)
{
adminClaims = await _roleManager.GetClaimsAsync(adminRole);
// correct => ['view-page', 'edit-page']
}
}
}
На мой взгляд, я понимаю, когда пользователь является членом Роль, он наследует требования этой роли.
По умолчанию ASP.NET Идентичность есть 5 таблиц:
- пользователей.
- Роли.
- UserRoles - Пользователь может иметь много ролей.
- RoleClaims - Роль может иметь много претензий.
- UserClaims - Пользователь может иметь много претензий.
Я считаю правильным? Почему userManager.GetClaimsAsync (пользователь) возвращает пустые претензии?
Любое предложение?
Мне нужно получить претензии пользователей на создание JWT в веб-api, поэтому, если токен не содержит действительных заявлений/ролей пользователя, я не могу использовать User.Claims. И я думаю UserManager.GetClaimsAsync (пользователь) запрашивает, что таблица UserRoles неверна, именно она запрашивает таблицу UserClaims. Есть ли у вас какие-либо предположения для этой ситуации? – trinvh
@trinvh "UserManager.GetClaimsAsync (пользователь) запрашивает UserRoles" был опечаткой, исправил его спасибо – tmg
Я отметил правильный ответ из-за вышеуказанной ссылки. Для всех, кто хочет получить заявки от пользователей, необходимо будет увидеть метод createAsync – trinvh