我创建了一个 token :
IdentityOptions identityOptions = new IdentityOptions();
var claims = new Claim[]
{
new Claim(identityOptions.ClaimsIdentity.UserIdClaimType, token.User.FirstOrDefault().ID.ToString()),
new Claim(identityOptions.ClaimsIdentity.UserNameClaimType,request.Local.UserName),
};
var signingKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes("this-is-my-secret-key"));
var signingCredentials = new SigningCredentials(signingKey, SecurityAlgorithms.HmacSha256);
var jwt = new JwtSecurityToken(signingCredentials: signingCredentials, claims: claims, expires: DateTime.Now.AddHours(12));
你能帮我如何注销或使 ASP.NET Core Web API 的 token 过期吗?因此用户将永远不会再使用此 token 。
谢谢
最佳答案
JWT 生成并发送到客户端后。它不能已经更改(不能由客户端本身更改,必须通过后端获取新 token )。
为了使 JWT 失效/撤销,您可能有一个 Redis(推荐)或数据库来存储与每个发布的 JWT 关联的那些失效的 JTI( token ID)。
如果您不希望拥有 Redis/数据库,那么您必须让您的 JWT 生命周期尽可能短,例如 5 分钟。然后,在注销时,从客户端(本地存储或 cookie)中删除 token 。但是,这种方法不会立即使 JWT 失效,如果客户在我们删除 token 之前保留 token ,则他们仍然能够访问 API。
关于c# - 如何注销或使 ASP.NET Core Web API 的 JWT token 过期?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67328230/