首页 > 解决方案 > 如何在 c# 中使 jwt 默认令牌作为外部承载无效或销毁?

问题描述

我正在使用 web api 并实现了登录的默认行为,即使用 jwt 身份验证的端点,现在我面临着使 jwt 令牌无效或销毁的问题,因为我想实现注销功能。谁能建议这种情况的逻辑如何处理 JWT 令牌过期?注意:对于登录,GrantResourceOwnerCredentials 方法照常使用,它会创建用于身份验证的令牌。

标签: c#asp.net-web-api2jwt

解决方案


一旦你发出了你的令牌,它将一直有效,直到它过期。

如果您需要执行注销或“使令牌无效”,您将需要执行一个额外的步骤。

您可以做的是将 SessionId(即 guid)存储在 User 表的数据库中。当用户登录时,将会话 ID 与串珠令牌一起发送。将此会话 id 存储在 cookie 或 sessionStorage 或其他任何内容中,并与每个请求一起将其发送到服务器。然后,您可以将过滤器全局应用于检查从客户端发送的 SessionId 是否与存储在数据库中的 SessionId 匹配的每个操作。

然后,如果您需要使令牌无效,则在用户表中存储一个新的 guid SessionId,当下一个请求到来时,它将不匹配,您可以返回 401 响应。


推荐阅读