如何在客户端解码ASP.NET Core 8 Identity生成的非JWT令牌?
关于ASP.NET Core 8 Identity自定义令牌的客户端解码方法
ASP.NET Core 8 Identity生成的令牌并非JWT!
这些令牌不是标准的JSON Web Token(JWT)。使用自定义令牌是有意为之,因为内置的Identity API主要针对简单场景设计。
要在客户端获取用户名、声明等信息,不用硬解码这种自定义令牌,推荐这么做:
后端新增一个用户信息接口,让客户端带着令牌调用,后端验证令牌后返回所需数据
- 后端示例代码(C#):
[Authorize] [HttpGet("api/userinfo")] public IActionResult GetUserInfo() { var userName = User.Identity.Name; var userClaims = User.Claims.Select(c => new { 类型 = c.Type, 值 = c.Value }); return Ok(new { 用户名 = userName, 声明 = userClaims }); } - 客户端用拿到的令牌作为请求头(比如
Authorization: Bearer {token})调用这个接口,就能直接拿到用户信息,比解码令牌靠谱多了。
- 后端示例代码(C#):
要是非得解码令牌(不建议,因为官方没公开格式,版本更新可能失效),得在前后端共享Identity的加密密钥,然后用相同的算法解密。但这种方式耦合性极强,完全违背Identity的设计初衷,别这么干。
内容的提问来源于stack exchange,提问作者Tohid
相关产品推荐
相关产品推荐

