存在
提示重启APP
捕获异常
稍后重试
未处理
APP端,无发确认此时获取的ticket是否可以换取token,所以应直接提示用户关闭页面重新打开 。此时sso登录页面地址可配置一个提示用户关闭应用的页面
secret
异步流程
返回access-token
关闭截流
请求api
用户信息
开启截流
结束
获取access-token
如果返回了mock-access-token
存储token状态
加锁
获取响应对象getResponse
存储操作页面地址
不存在
获取token
分支
未过期
通过code/ticket获取token
处理响应异常
APP
输出异常
[WEB]sso登录成功,会进入回调地址,并携带code(登录凭证号)和state。携带code可向后台换取一次token。存储token作为请求API的凭证信息。返回之前缓存的操作页地址用于欢迎页的跳转。[APP]APP一般在启动首页发起用户登录,通过内部方法获取ticket,携带ticket可向后台换取一次token。存储token作为请求API的凭证信息。完成后执行后续操作。调用的页面如果可以判断是重启状态,可以尝试转到重启前的页面。
存储token
抛出异常
已过期
否
输出access-token
输出登录前地址
通过code或refersh可向后台获取token。可解析成token对象。不处理产生的异常,由上一层处理。
请求API前,需要获取access-token作为凭证,无法获取token标记说明浏览器关闭过,需要SSO;无法获取token状态说明没登录过,需要SSO;token加锁,说明有其他api正在换token,需要等待重试;超时说明其他tab在换token时被终止执行(关闭),需要重新登录token存在且在有效期内,可用,直接返回;token过期,需要用refresh换新token,操作前需要加锁。换成功后解锁,返回。换取过程中产生的异常,如果是401,则会进行sso登录操作,否则需要解锁,继续沿用旧token。
验证token标记
清空token状态
返回mockuser-token
处理数据错误
获取响应体getBody
向后端询问sso登录页地址,携带回调地址
判定错误类型是AxiosError
WEB
处理数据错误并生成异常
IAM token接口
包含子流程的流程
提示错误类型
获取token状态
其他
token解锁存储token状态
登录系统用户
token / express_in / refresh_token
开始
提示错误类型、状态码、状态描述
输出响应体
sso登录前,会清空浏览器中的现有的token痕迹,并携带回调地址跳转到IAM登录页面。因为回调地址不是最后操作页面的地址,所以要先把操作页面地址进行缓存。
子流程
By Street YangCIEAF2023-2-16
判定锁超时
验证token是否加锁
验证access-token是否过期
判定errcode
生成数据异常
生成前端凭证
流程
超时
是
SSO登录
跳转回操作页面
判断响应的状态码
返回解析后的token对象
不为0
跳转到sso登录页面
抛出token异常
输出响应对象
备注
getClientID
请求一个api,获得响应结果的数据部分,通常是response.body.data中的内容。该方法会再getBody基础上,自动处理数据异常,
登录成功
ticket
门户网站回调地址
401
请求一个api,获得响应结果,请求前后会调用节流方法,并取得access-token信息加入请求头中,不处理响应中的错误
判断存在响应对象
获取响应数据getData
标记该错误被处理过
输出响应数据
IAM getUserInfo接口
code
clientID
处理过
App-getToken接口
token解锁还原旧token
getAppToken
为0
getUserInfo
未超时
正常结束
是token异常
提示数据错误内容
错误未被sso接管
开始 | 结束
IAM用户登录
token加锁
返回欢迎页
无锁
通过refresh-token获取token
判断当前响应错误是否被处理过
为了满足模拟用户需求,在询问sso登录地址时,可以直接返回一个token。这个token将被当做一个常规的token(就像通过code换的一样)参与后续流程操作。
建议入口
标记错误已被sso接管
请求接口
门户网站要求登录