angular - 处理 JWT 令牌和 cas 登录状态
问题描述
对于使用 cas 和 jwt 状态处理 SSO 登录的逻辑,我遇到了一些麻烦。
开始之前:用户要对我的应用程序进行身份验证,需要访问 cas,包括作为 url 中的参数需要获得访问权限的应用程序的名称,例如:myapp.com
登录后,用户通过 302 重定向到我的应用程序,并在 url 中附加了 JWT:myapp.com/?service=JWT-blablabla
这就是我想象应用程序的流程来检查用户是否已登录或者他是否带有 jwt
我有一个问题:
如果用户附加了一个有效的 jwt,但他在本地存储中仍然有一个有效的 JWT,哪个 JWT 具有最新过期时间的优先级,或者旧的 JWT 会被 cas 自动失效?请记住,jwt 需要由我的后端验证
在我的 http 调用中,我附加了我的承载 jwt,问题是我缓存了我的 http 调用,如果 jwt 过期并且用户不进行 http 调用,我该如何处理?我需要注销用户我迫不及待地想拨打 http 电话并告诉他这是无效的,还是我应该这样做?
解决方案
最近我自己实施了 SSO,以下是您问题的一些答案:
最新的令牌应该优先,但为什么会发生这种情况,即为什么 url 中有一个新的 jwt 令牌?如果用户在本地存储中仍有有效的 jwt 令牌时进入登录页面,他们应该被重定向到您的主页(或某处),ps。您不能使 jwt 令牌无效。
令牌过期后,您的服务器应返回 401 响应;这是你应该注意的。检查用户在本地存储中是否有 jwt 令牌,如果他们也收到 401,那么您知道令牌已过期,因此请调用您的 api 以刷新令牌,而无需将用户重定向到登录页面。
希望这可以帮助。
推荐阅读
- python - Keras 回归模型不能同时拟合 2 个标签
- asp.net-mvc - 如何在导航页面中包含搜索栏
- spring - 如何使用 Spring-Boot 的 RestTemplate 在 uri 标记中获取 http-client-requests 指标的模板值?
- sql - 你能解释一下下面的 SQL (postgres) 代码吗?
- javascript - 自定义样式输入类型范围的功能问题
- graphql - Prisma 不返回创建的相关记录
- java - 从用户输入中反转字符串
- cordova - 如何在 Ionic Application 中记录应用程序加载时间?(在 Ionic v3 和 Ionic v4 中)
- c - 转义括号文字内的 Scanf 十进制数
- vue.js - v-calendar 插件日期格式