开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第7天,点击查看活动详情
需求说明
- 目前存在两个系统:C系统和W系统
- 其中W系统不存在登录页面,必须要从C系统跳转展示。
主要跳转流程:
- C系统未登录时跳转W系统: C系统未登录时,由于W系统不提供登陆陆页面,所以必须先登录C系统然后点击相应按钮跳转到W。
- C系统已登录跳转W系统,这种情况又分为两种:
- C系统已过期:此时在C系统点击跳转按钮到W系统不成功,返回;
- 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系统的登录有效期没有关联,各系统自己维护有效的登录有效期时间。
- 由于使用非对称加密,可能跳转速度比较慢。