一、该问题的重现步骤是什么?
1. 多系统结构是这样的,有A,B两个系统,A系统作为门户系统,提供单点登录的 ssoBaseUrl
A系统,B系统都有自己的一套bladex报表,也需要独立的菜单数据和用户权限
2. 先登录A系统(单点登录), 登录成功
3. 在登录B系统(单点登录),登录成功
4. 在切换会A系统的访问链接,刷新,被提示 “认证信息错误或者无效”, 然后必须再次执行登录流程。
5. A登录成功后,再切换到B访问链接,也被提示“认证信息错误或者无效”, 然后必须再次执行登录流程。
6. 如此往复,发现在一个恶心循环里,就是任意单点登录的系统会把其他已完成单点登录系统无效,导致每次都需要重新执行登录流程
二、你期待的结果是什么?实际看到的又是什么?
单点登录完成后,其他系统也能单点登录成功,同时使用独立系统菜单数据展示自己的菜单权限
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
boot版本,linux系统
<bladex.project.version>4.5.0.RELEASE</bladex.project.version>
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
请问,问题是不是处在,登录到不同系统后,由于相同用户在不同系统间的菜单和角色不一样,导致cookie等无效,被视为每次都要登录?
我的理解是,单点登录只是帮我为此id和密码以及登录token的有效时间长,
为什么跟系统独立权限强关联?
修改这里的token的两个key:https://center.javablade.com/blade/Saber3/src/commit/787feb0b9b887cbce4da372c090fc42d453093c6/src/utils/auth.js#L3
每个系统都需要修改下,这样就不会共用逻辑
请问你说的修改key是tokekey,refreshtokey?内容呢?
我自己任意命名?
修改 token的两个key
意思就是两个token的key的变量都需要修改,可以随意修改,只要不和其他系统的key冲突就行。
出现新问题,就是某个系统登出,其他系统不会被自动登出
token是无状态的,所以默认设置下不会受登出影响。如果你要全部登出,需要把token保存到redis,一个退出后,就删掉所有相关token,这样其他系统就自动退出了。
不会共用逻辑,是否代码,单点登录仍能有效?
按要求,修改上面链接的工具类里的两个token的key,各个系统不要重复。
能够答疑一下,token不共享后,那么对应的通过单点登录后,其他系统的token有效时间也不会自动延长?
有效时间和这个没关系,是根据 系统管理-应用管理 的配置来定的,他分accessToken和refreshToken的概念,refreshToken时间更长,当accessToken过期,系统会无感刷新,使用refreshToken去自动获取新的token并且刷新周期。只有你超过了refreshToken的时间没有操作系统,token才会过期。
扫一扫访问 Blade技术社区 移动端