c# - 如何在 c# 中使 jwt 默认令牌作为外部承载无效或销毁?
问题描述
我正在使用 web api 并实现了登录的默认行为,即使用 jwt 身份验证的端点,现在我面临着使 jwt 令牌无效或销毁的问题,因为我想实现注销功能。谁能建议这种情况的逻辑如何处理 JWT 令牌过期?注意:对于登录,GrantResourceOwnerCredentials 方法照常使用,它会创建用于身份验证的令牌。
解决方案
一旦你发出了你的令牌,它将一直有效,直到它过期。
如果您需要执行注销或“使令牌无效”,您将需要执行一个额外的步骤。
您可以做的是将 SessionId(即 guid)存储在 User 表的数据库中。当用户登录时,将会话 ID 与串珠令牌一起发送。将此会话 id 存储在 cookie 或 sessionStorage 或其他任何内容中,并与每个请求一起将其发送到服务器。然后,您可以将过滤器全局应用于检查从客户端发送的 SessionId 是否与存储在数据库中的 SessionId 匹配的每个操作。
然后,如果您需要使令牌无效,则在用户表中存储一个新的 guid SessionId,当下一个请求到来时,它将不匹配,您可以返回 401 响应。
推荐阅读
- testing - 多个 if 语句的圈复杂度
- python - 如何抓取一个网站的所有首页文字内容?
- github - 为特定元素重新加载 SwiftUI 视图
- python - GCP DLP(数据丢失预防)得到“解密失败:密文无效。”
- java - 了解时间复杂度如何工作的初学者方法
- javascript - 可以将 math.max 用于对象数组吗?
- python - (Python Unittest) 正在测试的模块无法导入其依赖项:ModuleNotFoundError
- unreal-engine4 - 在虚幻引擎中倒带玩家死亡
- dataframe - 无法在没有标题的情况下编写 Dynamicframe
- network-programming - WebRequest.GetResponse() 正在获取“基础连接已关闭”