单点登录: 单点登录某个系统,会把其他系统的登录变更无效

Blade 未结 2 196
石老记
石老记 剑圣 2025-08-25 14:13

一、该问题的重现步骤是什么?

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的有效时间长,

为什么跟系统独立权限强关联?



2条回答
  • 2025-08-25 14:15

    修改这里的token的两个key:https://center.javablade.com/blade/Saber3/src/commit/787feb0b9b887cbce4da372c090fc42d453093c6/src/utils/auth.js#L3


    每个系统都需要修改下,这样就不会共用逻辑

    作者追问:2025-08-25 14:30

    image.png

    请问你说的修改key是tokekey,refreshtokey?内容呢?

    我自己任意命名?


    回答: 2025-08-25 14:32

    修改 token的两个key 


    意思就是两个token的key的变量都需要修改,可以随意修改,只要不和其他系统的key冲突就行。

    作者追问:2025-08-25 14:49

    出现新问题,就是某个系统登出,其他系统不会被自动登出

    回答: 2025-08-25 15:13

    token是无状态的,所以默认设置下不会受登出影响。如果你要全部登出,需要把token保存到redis,一个退出后,就删掉所有相关token,这样其他系统就自动退出了。

    0 讨论(1)
  • 2025-08-25 14:18

    不会共用逻辑,是否代码,单点登录仍能有效?

    作者追问:2025-08-25 14:29

    按要求,修改上面链接的工具类里的两个token的key,各个系统不要重复。

    回答: 2025-08-25 15:11

    能够答疑一下,token不共享后,那么对应的通过单点登录后,其他系统的token有效时间也不会自动延长?

    作者追问:2025-08-30 16:13

    有效时间和这个没关系,是根据 系统管理-应用管理 的配置来定的,他分accessToken和refreshToken的概念,refreshToken时间更长,当accessToken过期,系统会无感刷新,使用refreshToken去自动获取新的token并且刷新周期。只有你超过了refreshToken的时间没有操作系统,token才会过期。

    0 讨论(0)
提交回复