首页 > 解决方案 > 处理 JWT 令牌和 cas 登录状态

问题描述

对于使用 cas 和 jwt 状态处理 SSO 登录的逻辑,我遇到了一些麻烦。

开始之前:用户要对我的应用程序进行身份验证,需要访问 cas,包括作为 url 中的参数需要获得访问权限的应用程序的名称,例如:myapp.com

登录后,用户通过 302 重定向到我的应用程序,并在 url 中附加了 JWT:myapp.com/?service=JWT-blablabla

这就是我想象应用程序的流程来检查用户是否已登录或者他是否带有 jwt

在此处输入图像描述

我有一个问题:

  1. 如果用户附加了一个有效的 jwt,但他在本地存储中仍然有一个有效的 JWT,哪个 JWT 具有最新过期时间的优先级,或者旧的 JWT 会被 cas 自动失效?请记住,jwt 需要由我的后端验证

  2. 在我的 http 调用中,我附加了我的承载 jwt,问题是我缓存了我的 http 调用,如果 jwt 过期并且用户不进行 http 调用,我该如何处理?我需要注销用户我迫不及待地想拨打 http 电话并告诉他这是无效的,还是我应该这样做?

标签: angularjwtcas

解决方案


最近我自己实施了 SSO,以下是您问题的一些答案:

  1. 最新的令牌应该优先,但为什么会发生这种情况,即为什么 url 中有一个新的 jwt 令牌?如果用户在本地存储中仍有有效的 jwt 令牌时进入登录页面,他们应该被重定向到您的主页(或某处),ps。您不能使 jwt 令牌无效。

  2. 令牌过期后,您的服务器应返回 401 响应;这是你应该注意的。检查用户在本地存储中是否有 jwt 令牌,如果他们也收到 401,那么您知道令牌已过期,因此请调用您的 api 以刷新令牌,而无需将用户重定向到登录页面。

希望这可以帮助。


推荐阅读