企业微信客户端打开则自动跳转 OAuth 连接授权成功后 Callback Code 回来去后端换区用户 token 自动登录;非企业微信客户端跳转到 Login 页面。。
目前我整个逻辑写在了 router.beforeEach 里,写这里合适吗,大家都写在哪里(比如是否把跳转和自动登录写在 main.ts 中路由前?)?
流程是否有问题?我的基本逻辑:判断有无 token 是否登录 > 判断是否企业微信客户端(是跳转 OAuth 连接并回调)> 判断是否有携带 Code ,自动登录。
// 4.判断访问页面是否在路由白名单地址(静态路由)中,如果存在直接放行
  if (ROUTER_WHITE_LIST.includes(to.path)) return next();
  // 5.判断是否有 Token ,没有重定向到 login 页面
  if (!userStore.token) {
    if (isWeWork()) {
      userStore.loginWeWork().then(isSuccess => {
        if (isSuccess) next();
      });
    } else {
      next({ path: LOGIN_URL, replace: true });
    }
  } else {
    // 使用缓存视图
    useCachedViewStoreHook().addCachedView(to);
    next();
  }
|      1F7TsdQL45E0jmoiG      2024-02-07 17:22:17 +08:00 附带企微用户 id 会更好 | 
|  |      3jy02534655      2024-02-07 17:50:30 +08:00 这种判断按理说只需要判断一次就行了吧,为啥不卸载 main.js 里面 | 
|  |      4importmeta      2024-02-07 18:20:53 +08:00 巧了,刚做了一个类似的企业微信应用,前端不参与,直接用后端重定向。 | 
|  |      5tlerbao OP @jy02534655 这就是我来问的原因啊,菜吗,所以想请教一下各位怎么些更好哈 | 
|  |      6wjfz      2024-02-07 23:46:55 +08:00 直接让后端入口地址,让后端去搞跳转授权 | 
|  |      8wjfz      2024-02-08 07:59:13 +08:00 @tlerbao #7  比如在后端设置一个 /wework/login 这样的路由,负责与企微进行 OAuth 授权流程。 // 5.判断是否有 Token ,没有重定向到 login 页面 if (!userStore.token) { if (isWeWork()) { // 跳转至后端 /wework/login } ...省略 等后端拿到企微的 code 换取用户信息之后,把 token 写入 cookie ,前端把 cookie 里的 code 存到 userStore 这样做的好处就是,在构造企微跳转链接的时候,前端不需要关注企微的 appid 、redirect_uri 等参数。 |