需求来源
我们目前需要整合多个不同的产品平台,让他们能够通过一个统一的入口来访问。但是这些被集成的产品都没有实施单点登录机制,而是使用 session-cookie 来做权限验证。因此,我们需要在用户点击进入不同产品时,先进行权限判断和跳转。大多数产品都是直接访问登录界面,然后系统会自动填充账号和密码后跳转到产品的默认首页。这种方案改造成本较低,但是会有一个短暂的白屏过程。我们可以尝试对此流程进行优化,实现无感知的平滑跳转。
优化思路
一个核心点:不用访问登录界面,自己模拟一个权限验证接口,如果已登录就直接跳转产品首页,如果未登录就接口层直接模拟登录流程生成 session,接口通过 302 和 set-cookie 完成上述需求。
使用 golang 模拟一个 http server 完成这个需求,代码如下
效果展示
当访问 login 接口时,判断用户权限,根据用户权限判断是否需要 Set-cookie, 这样就针对于这个项目而言,改造成本就没有那么大,而且访问也是无感知的,不会出现白屏这种现象。
Done!