Просмотр исходного кода

:zap: 修复多租户refreshToken问题

smallchill 6 лет назад
Родитель
Сommit
3bd6c1ea75
2 измененных файлов с 12 добавлено и 2 удалено
  1. 5 1
      src/api/user.js
  2. 7 1
      src/store/modules/user.js

+ 5 - 1
src/api/user.js

@@ -17,10 +17,14 @@ export const loginByUsername = (tenantId, username, password, type) => request({
   }
 })
 
-export const refreshToken = (refresh_token) => request({
+export const refreshToken = (refresh_token, tenantId) => request({
   url: '/api/blade-auth/oauth/token',
   method: 'post',
+  headers: {
+    'Tenant-Id': tenantId
+  },
   params: {
+    tenantId,
     refresh_token,
     grant_type: "refresh_token",
     scope: "all",

+ 7 - 1
src/store/modules/user.js

@@ -33,6 +33,7 @@ function addPath(ele, first) {
 
 const user = {
   state: {
+    tenantId: getStore({name: 'tenantId'}) || '',
     userInfo: getStore({name: 'userInfo'}) || [],
     permission: getStore({name: 'permission'}) || {},
     roles: [],
@@ -55,6 +56,7 @@ const user = {
           } else {
             commit('SET_TOKEN', data.access_token);
             commit('SET_REFRESH_TOKEN', data.refresh_token);
+            commit('SET_TENANT_ID', data.tenant_id);
             commit('SET_USER_INFO', data);
             commit('DEL_ALL_TAG');
             commit('CLEAR_LOCK');
@@ -101,7 +103,7 @@ const user = {
     refreshToken({state, commit}) {
       console.log('handle refresh token')
       return new Promise((resolve, reject) => {
-        refreshToken(state.refreshToken).then(res => {
+        refreshToken(state.refreshToken, state.tenantId).then(res => {
           const data = res.data;
           commit('SET_TOKEN', data.access_token);
           commit('SET_REFRESH_TOKEN', data.refresh_token);
@@ -177,6 +179,10 @@ const user = {
       state.refreshToken = refreshToken;
       setStore({name: 'refreshToken', content: state.refreshToken, type: 'session'})
     },
+    SET_TENANT_ID: (state, tenantId) => {
+      state.tenantId = tenantId;
+      setStore({name: 'tenantId', content: state.tenantId, type: 'session'})
+    },
     SET_USER_INFO: (state, userInfo) => {
       state.userInfo = userInfo;
       setStore({name: 'userInfo', content: state.userInfo})