0%

WebSite-Token

由于当前的 Vue 网页的website 涉及同时调用两个服务,且不同服务的 Token 并不是统一的原因,所以当前需要针对的 website 的 Token 问题进行重构优化。

需求背景

最初的设计是 Vue 的 website 所有请求都是从 Portalserver 请求的,所以当时设计的是只需要在请求的接口中加上 portal 的 Token,然后在跳转 MEPER-Cloud 的时候才需要将当前的 cookie 中写入 MEPER-TOKEN 进行 跳转就好了, 所以我们在用户登录 portal 获取 Token 的时候已经将对应的 MEPERToken获取到了并存储到数据库中。

但是现在 Website 上面的调用了portal 的相关注册和认证接口,但是涉及到 MEPER-Cloud 的接口的话直接调用 MEPER,这样的话就涉及到需要前端在请求的过程中加上 MEPER-TOKEN 的对应 Token在 header 中保证请求的成功。

需求说明

Portal 和 MEPER-Cloud 的服务框架都是基于 Appbase framework 的,所以对于 Token 的认证都是去获取当前的 cookie 中的 MEPER-TOKEN,当跨域的情况下,cookie 无法传递的情况下, 需要从当前请求的 Request 的 header 中找MEPER-TOKEN。

所以在前端调用不同服务的接口的时候,需要给header 中的MEPER-TOKEN指定对应的服务的 Token 赋值。

需求设计

upload successful

Potal server

Portal server登录接口

用户登录的时候需要判断当前的用户是否是 SI 而且是否进行了企业认证,并且企业认证审核通过了。

企业没有认证

1、若是企业认证没有审核通过的,那么 MEPER-Cloud 此时还没有当前的用户的对应信息,所以没有办法获取对应的MEPER-TOKEN。

企业认证通过

2、企业认证通过的的 SI 此时的用户信息已经同步到 MEPER-Cloud 了。用户通过Portal 的登录接口进行登录的时候,Portal 从 MEPER 获取对应 User 的 Token 并存储。

登录成功Response

1
2
3
4
5
Response
{
Portal-Token:"肯定有",
Meper-Token:"企业认证之后的有",
}

Vue Website

Member.ts 登录

用户登录请求成功返回后,需要在当前的 Cookie 中存储对应的 Portal-Token 和 Meper-Token。

页面加载

每个 Vue 页面加载的时候都需要去校验当前的 cookie 中是否包含必要的 Token,若是已经企业认证通过的用户,则两个 Token 都是必要的。

Member.ts/Workspace.ts

member.ts

member.ts 定义的相关需要带着 Token 的请求需要将 header 中带上 portal-Token,从 Cookie 中获取到 Portal-Token 给 Header中的 MEPER-TOKEN 赋值。

workspace.ts

workspace.ts 中定义的请求是直接请求到 MEPER-Cloud 服务的,所以在请求的过程中需要给 Header中的MEPER-TOKEN赋值,从 cookie 中获取 Meper-Token 进行赋值。

跳转 MEPER-Cloud

进入空间的话,需要将当前浏览器的 Cookie 中的MEPER-TOKEN赋值为 Meper-Token 的值。然后浏览器可以直接跳转对应的 MEPER-Cloud的 Vaadin 页面。