为了账号安全,请及时绑定邮箱和手机立即绑定

在所有控制器方法上从 JWT 获取 userId?

在所有控制器方法上从 JWT 获取 userId?

C#
MM们 2021-06-28 17:03:00
我正在创建一个使用 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
提交
取消
意见反馈 帮助中心 APP下载
官方微信