spring - 登录/注销是否需要 JWT 身份验证
问题描述
我最近开始致力于保护我的 Web 应用程序。我正在使用 Spring Framework。所以我已经应用了 JWT 身份验证来保护我的 REST API 端点。我还创建了一个不同的示例演示,其中我提供了简单的登录和注销功能使用弹簧安全。
现在我正在尝试将 JWT 身份验证用于登录/注销功能。但我觉得它有点错误。我认为 JWT 应该只用于保护 REST 服务的端点,而不是登录/注销功能,这是一个有状态的活动和 JWT 身份验证不是最好的方法。
这是我的误解吗?JWT 也可以用于登录/注销吗?任何输入都将不胜感激。
解决方案
好吧,您已经回答了大部分问题。您可以进行stateful/stateless
身份验证。现在使用哪一个取决于应用程序的用例。
用例 1:
如果您的应用程序部署为需要从 UI 完成所有执行的服务,则可以考虑状态身份验证,即基于表单的身份验证。
用例 2:
假设您正在为第 3 方创建 API 并希望保护它们,请进行无状态身份验证,即 JWT
用例 3:
现在,如果您的用例都是 Usecase 1,2,您还可以在一个应用程序中实现基于表单的/JWT 身份验证。
笔记:
话虽如此,您也可以使用令牌身份验证登录。唯一的问题是您必须自己编写一些场景。
例如:
当登录成功时,添加 Token
localStorage
并使用 if 进行进一步的请求。注销时从 中删除令牌
localStorage
。对于没有令牌的任何访问重定向到带有错误消息的登录屏幕。
推荐阅读
- collision - 圆碰撞解决 - 静态碰撞
- python - torch.cat的逆向操作
- javascript - 为什么在 Chart.js 中放置两个带有时间笛卡尔轴的数据集会导致两个 Y 轴刻度集?
- python - Django,从主题中获取所有帖子
- python - “从烧瓶导入烧瓶”中的语法错误
- redis - 带有 TYPE 选项的 SCAN 命令与 Lua 脚本之间的时间复杂度差异
- javascript - Django - Chart.js 不返回任何内容
- curl - 带有多个参数的 JAX RS 和 application/x-www-form-urlencoded
- emacs - Emacs 是否可以像 Elisp 函数一样在 echo 区域显示 Erlang 函数?
- operating-system - Catalina patcher 10.15.7 微软问题