jwt怎么获取当前登录用户_.NetCore3.1 使用JWT认证授权时获取当前请求的用户名

在netcore5.0里,这样不行了

应该编入用户名,最后用HttpContext.User.Identity获取(从claim获取)

//======================================================================================================================================================================

最近使用JWT来给WebApi进行授权认证,在项目中使用 HttpContext.User.Identity.Name获取当前登录的用户名一直获取不到,以往都是这样获取,这个问题查了很久都没找到相关资料

特此记录一下,避坑。

在JWT生成Token时一定要加入ClaimTypes.Name这样才能获取到用户名

public static string GetToken(string userName)

{

var claims = new List();

claims.AddRange(new[] {

new Claim(ClaimTypes.Name, userName),

new Claim(JwtRegisteredClaimNames.Sub, userName),

new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),

new Claim(JwtRegisteredClaimNames.Iat, DateTimeOffset.Now.ToUnixTimeSeconds().ToString(), ClaimValueTypes.Integer64)

});

var tokenManagement = UtilConfHelper.GetTokenManagement();

DateTime now = DateTime.Now;

var jwtSecurityToken = new JwtSecurityToken(

issuer: tokenManagement.Issuer,

audience: tokenManagement.Audience,

claims: claims,

notBefore: now,

expires: now.Add(TimeSpan.FromMinutes(tokenManagement.AccessExpiration)),

signingCredentials: new SigningCredentials(new SymmetricSecurityKey(Encoding.ASCII.GetBytes(tokenManagement.Secret)), SecurityAlgorithms.HmacSha256)

);

string token = new JwtSecurityTokenHandler().WriteToken(jwtSecurityToken);

return token;

}

获取就使用 Response.HttpContext.User.Identity.Name 获取userName

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值