authentication - 为什么说 JWT 代币是无状态的
问题描述
我在某处读到服务器必须不维护有关已发行令牌的状态。这是如何实现的?最终我需要查询数据库以找到持有令牌的人是谁。
有人可以向我解释范式吗?
谢谢。
解决方案
有状态意味着服务器在内存中具有未存储到数据库中的信息。
想象一个word文档,两个人同时编辑它。每个用户的 Word 都有自己的状态。这意味着你可以说撤消,它知道你做了什么,所以它可以撤消。重要提示:此信息不会持久保存到任何数据库,而仅在服务器状态下可用。当您重新启动服务器(或 Word)时,此信息将丢失,并且您无法撤消最近的更改。
这对 JWT 意味着,服务器不会将会话保存在内存中。这反过来意味着它不记得您的最后一个请求已经过身份验证,而是要求您在每个请求上发送令牌。
该术语确实有点令人困惑,因为数据库中的数据有时也称为(应用程序)状态。
推荐阅读
- c# - ASP.NET 应用程序运行时如何将数据保存在内存(会话)中?
- ios - 如果集合中只有 1 个元素,则 UICollectionView 不进入 cellForItemAt 方法
- azure - 将自定义 exe 上传到 Azure Devops 管道
- regex - 如何将多个正则表达式字符串合并为一个?
- css - 引导下拉菜单类的问题
- javascript - Gatsby-Redux:组件不会在状态更改时重新渲染
- eclipse - 在 Eclipse 中打开一个新的内部 Web 浏览器选项卡?
- if-statement - 如何使用 query() 在 googlesheets 中构建搜索表单?
- arrays - Swift 中最大的数组(整数)容量是多少?
- python - 在自包含文件夹中构建我的烧瓶应用程序