【发布时间】:2019-03-26 11:43:45
【问题描述】:
我正在用 asp.net core 2.1 编写一个使用 postgresql 作为数据库的协作 Web API。在用户登录后,用户将获得一个 JWT 令牌,该令牌将用于前端身份验证(前端将使用 Angular 2+ 实现)。我想将用户角色存储在 JWT 中,当用户登录时,将从数据库中读取用户角色并将其存储(授权角色)所以我将在控制器方法上编写角色。我想使用 Authorize 属性。
// Auth Controller
[HttpGet("GetUsers")]
[Authorize(Roles = "admin")]
public ActionResult GetUsers()
{
var users = _authRepository.GetUsers();
return Ok(users);
}
和 Repository.cs
public List<User> GetUsers()
{
var users = _context.Users.ToList();
return users;
}
问题:我是否需要编写一个中间件来从 JWT 读取每个用户角色并将该角色放入身份主体声明中?请分享你的经验。我很高兴知道你的方法。
【问题讨论】:
-
不太清楚你在这里问什么......你尝试了什么,什么不起作用?
-
我想根据 JWT 令牌管理用户角色。我需要一个中间件吗?
-
如果您使用 Microsoft ASPNET Core Jwt 库/处理程序 (System.IdentityModel.Tokens.Jwt),则传入的经过验证的 JWT 中的任何角色声明都将自动提取并填充到 ClaimsPrincipal (?) 和可与 Authorize(Roles="...")] 属性一起使用。
-
我也做了同样的事情,它对我有用,谢谢我从 JWT 文档中阅读。身份原则。
标签: c# asp.net-core jwt