一个简单的系统间跳转方案

206 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情

需求说明

  • 目前存在两个系统:C系统和W系统
  • 其中W系统不存在登录页面,必须要从C系统跳转展示。

主要跳转流程:

  • C系统未登录时跳转W系统: C系统未登录时,由于W系统不提供登陆陆页面,所以必须先登录C系统然后点击相应按钮跳转到W。
  • C系统已登录跳转W系统,这种情况又分为两种:
  1. C系统已过期:此时在C系统点击跳转按钮到W系统不成功,返回;
  2. C系统登录未过期

跳转方案与主要流程

跳转W系统的前提是C系统已登录且未过期,否则需要重新登录C系统
%% 时序图例子,-> 直线,-->虚线,->>实线箭头
  sequenceDiagram
      participant 用户
    participant C系统
    participant W系统
    用户->>W系统: 1、用户点击C页面菜单,将token,以及本次有效时间戳进行非对称加密后添加到W主页的url中,跳转W主页
    W系统->>W系统: 2、解密后验证本次时间戳是否有效
    W系统->>C系统: 3、将token解密后发送C系统
    C系统->>C系统: 4、验证token是否可信
    C系统-->>W系统: 5、验证完成,返回非对称加密的用户信息
    W系统->>W系统: 6、生成局部令牌
    W系统-->>用户: 7、将局部令牌发回用户浏览器,用户使用局部令牌登录W系统

基本流程说明

  • 用户从C系统页面相应位置点击跳转到W主页,发送跳转的url和使用非对称加密的token。可以使用如下格式:
http://xxxx?token=ABCDEFG
  • W系统将token解密有发送给C系统进行校验。
  • C系统将token在本系统校验是否已经登录,如果已经登录,则查询token的用户信息并进行非对称的加密返回给W系统。用户信息主要包括(用户ID、姓名、角色、机构等)
  • W系统接收到登录成功的信息以及用户信息后,生成自己的局部令牌保持登录状态
已经跳转W系统后,使用W系统的局部令牌,如果令牌失效则跳转C登录页面
%% 时序图例子,-> 直线,-->虚线,->>实线箭头
  sequenceDiagram
      participant 用户
    participant W系统
    用户->>W系统: 用户点击W相应页面
    W系统->>W系统: 校验局部令牌是否有效
    W系统-->>用户: 令牌无效,跳转C系统登录页

三、注意事项与优缺点

  • 跳转成功后C系统和W系统的登录有效期没有关联,各系统自己维护有效的登录有效期时间。
  • 由于使用非对称加密,可能跳转速度比较慢。