单点登录无限跳转的问题 您所在的位置:网站首页 linux页面跳转 单点登录无限跳转的问题

单点登录无限跳转的问题

2023-03-01 13:53| 来源: 网络整理| 查看: 265

场景

oa是主系统,crm是子系统。子系统对接oa系统的单点,从单点界面点crm图标,跳转到crm应用。crm应用前后端分离,后端提供鉴权接口getToken(),前端调用鉴权接口, 如果鉴权成功,登录crm系统。 如果鉴权不成功,跳转到oa登录页,登录后回调到crm登录页面。

crm鉴权逻辑描述: 从cookie拿到约定的token,去oa单点校验登录。通过则返回code=0表示成功,失败code=-1。 那么跳转到oa登录页。

oa单点如果通过,会从本系统查看是否有此用户,如果有成功,如果没有,还是返回失败code=-1。 还是跳转到oa登录页。

结果出现了无限跳转的情况。

解决方案

分析排查: 仔细一分析,发现了问题所在。 当crm中没有oa的用户时(oa和crm用户单独维护,是通过定时推送来同步用户的)。 那么oa登录后,点图标跳转到crm,crm鉴权开始,token检验虽然通过,但是用户不存在,但是返回-1失败。前端看到失败,会跳转到oa登录页,让他登录。但用户实际已经登录,所以又会回调到crm登录页,这里又鉴权,发现还是失败,又会跳转到oa登录页。 依次类推,会一直跳转。

方案一: 彻底做到2方数据同步。 这个其实有点难,因为有2个一致性: 用户数据一致性(这个还好吧,只要程序没毛病,基本可以做到) 实时一致性(要看同步的策略了,例如每天推一次,那么当天新增的用户可能同步不到)

方案二: 改进接口。 这里有个细节。后台的鉴权接口返回信息太笼统,失败了就是-1,其实应该分情况。 例如单点校验失败E00001,无此用户E00002,那么前端就好判断了。 当E00001时,跳转到oa登录页。 当E00002时,提示无此用户,请先添加用户。这样就不会无限跳转了。



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有