我正在创建一个使用 JWT 进行身份验证和授权的 Core 2.0 Web API 项目。我想要保护的控制器方法都用Authorize属性修饰。这是有效的。如果我在 Bearer 标头中传递 JWT,则会得到 200。如果我无法传递 JWT,则会得到 401。一切正常。在我的 JWT 中,我在授权时将用户 ID 存储在“UserId”字段中。var claimsdata = new[] { new Claim("UserId", user.Id.ToString()),然后我有一个扩展方法:public static string GetUserId(this IPrincipal user) { if (user == null) return string.Empty; var identity = (ClaimsIdentity)user.Identity; IEnumerable<Claim> claims = identity.Claims; return claims.FirstOrDefault(s => s.Type == "UserId")?.Value; }在我的控制器方法中,使用“授权”,我经常需要用户的 ID。所以我调用了我的 GetUserId 方法。这有效。但是,我不确定这是否是从令牌中获取 Id 的最佳方式。int.TryParse(User.GetUserId(), out _userId);我需要在所有控制器上使用该代码。我不能在构造函数中做到这一点,因为..我认为这是错误的。我在这里做对了吗?
3 回答
- 3 回答
- 0 关注
- 321 浏览
添加回答
举报
0/150
提交
取消