ソースを参照

update 优化 三方登录不同域名问题 采用新方案

疯狂的狮子Li 1 年間 前
コミット
c206ab5b4a

+ 6 - 2
src/api/system/social/auth.ts

@@ -1,10 +1,14 @@
 import request from '@/utils/request';
 
 // 绑定账号
-export function authBinding(source: string) {
+export function authBinding(source: string, tenantId: string) {
   return request({
     url: '/auth/binding/' + source,
-    method: 'get'
+    method: 'get',
+    params: {
+      tenantId: tenantId,
+      domain: window.location.host
+    }
   });
 }
 

+ 4 - 2
src/layout/components/SocialCallback/index.vue

@@ -17,8 +17,9 @@ const loading = ref(true);
 const code = route.query.code as string;
 const state = route.query.state as string;
 const source = route.query.source as string;
-const tenantId = route.query.tenantId as string ? route.query.tenantId as string : '000000';
-const domain = route.query.domain as string;
+const stateJson = JSON.parse(atob(state));
+const tenantId = stateJson.tenantId as string ? stateJson.tenantId as string : '000000';
+const domain = stateJson.domain as string;
 
 const processResponse = async (res: any) => {
   if (res.code !== 200) {
@@ -67,6 +68,7 @@ const init = async () => {
     let urlFull = new URL(window.location.href);
     urlFull.host = domain;
     window.location.href = urlFull.toString();
+    return;
   }
 
   const data: LoginData = {

+ 2 - 2
src/views/login.vue

@@ -191,10 +191,10 @@ const initTenantList = async () => {
  * @param type
  */
 const doSocialLogin = (type: string) => {
-  authBinding(type).then((res: any) => {
+  authBinding(type, loginForm.value.tenantId).then((res: any) => {
     if (res.code === HttpStatus.SUCCESS) {
       // 获取授权地址跳转
-      window.location.href = res.data + '&tenantId=' + loginForm.value.tenantId + '&domain=' + window.location.host;
+      window.location.href = res.data;
     } else {
       ElMessage.error(res.msg);
     }

+ 2 - 2
src/views/system/user/profile/thirdParty.vue

@@ -84,9 +84,9 @@ const unlockAuth = (row: any) => {
 };
 
 const authUrl = (source: string) => {
-  authBinding(source).then((res: any) => {
+  authBinding(source, useUserStore().tenantId).then((res: any) => {
     if (res.code === 200) {
-      window.location.href = res.data + '&tenantId=' + useUserStore().tenantId + '&domain=' + window.location.host;
+      window.location.href = res.data;
     } else {
       proxy?.$modal.msgError(res.msg);
     }