Ver código fonte

1.单点登录到子系统

sss 3 anos atrás
pai
commit
242a7443d0

+ 8 - 1
src/api/system/user.js

@@ -73,4 +73,11 @@ export function unbindDmUser(ids) {
   })
 }
 
-export default { add, edit, del, getUsers, unbindDmUser }
+export function findPassWord(param) {
+  return request({
+    url: 'api/users/findPassWord?username='+param,
+    method: 'get'
+  })
+}
+
+export default { add, edit, del, getUsers, unbindDmUser, findPassWord }

+ 1 - 0
src/store/getters.js

@@ -9,6 +9,7 @@ const getters = {
   cachedViews: state => state.tagsView.cachedViews,
   roles: state => state.user.roles,
   user: state => state.user.user,
+  userPassword: state => state.user.userPassword,
   loadMenus: state => state.user.loadMenus,
   permission_routers: state => state.permission.routers,
   addRouters: state => state.permission.addRouters,

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

@@ -5,6 +5,7 @@ const user = {
   state: {
     token: getToken(),
     user: {},
+    userPassword: sessionStorage.getItem('userPassword') || '',
     roles: [],
     // 第一次加载菜单时用到
     loadMenus: false
@@ -22,6 +23,9 @@ const user = {
     },
     SET_LOAD_MENUS: (state, loadMenus) => {
       state.loadMenus = loadMenus
+    },
+    SET_USER_PASSWORD: (state, password) => {
+      state.userPassword = password
     }
   },
 
@@ -36,6 +40,9 @@ const user = {
           setUserInfo(res.user, commit)
           // 第一次加载菜单时用到, 具体见 src 目录下的 permission.js
           commit('SET_LOAD_MENUS', true)
+          // 存储用户密码用作单点登录子系统
+          sessionStorage.setItem('userPassword', userInfo.password)
+          commit('SET_USER_PASSWORD', userInfo.password)
           resolve()
         }).catch(error => {
           reject(error)

+ 14 - 2
src/views/dm/systemNavigation/index.vue

@@ -5,7 +5,7 @@
         <img :src=" baseApi + '/file/' + system.storage.type + '/' + system.storage.realName" class="image">
         <div class="content">
           <span>{{ system.systemName }}</span>
-          <el-button type="danger" round>进入</el-button>
+          <el-button type="danger" round @click="sso(system.systemUrl)">进入</el-button>
         </div>
       </el-card>
     </el-col>
@@ -13,6 +13,8 @@
 </template>
 
 <script>
+import { encrypt,decrypt } from '@/utils/rsaEncrypt'
+import { findPassWord } from '@/api/system/user'
 import { mapGetters } from 'vuex'
 import crudDmSystem from '@/api/dm/system/dmSystem'
 export default {
@@ -24,7 +26,8 @@ export default {
   computed: {
     ...mapGetters([
       'user',
-      'baseApi'
+      'baseApi',
+      'userPassword'
     ])
   },
   mounted() {
@@ -36,6 +39,15 @@ export default {
         console.log('res', res)
         this.systemList = res
       })
+    },
+    // 单点登录
+    sso(url) {
+      findPassWord(this.user.username).then(res => {
+        const username = encrypt(this.user.username)
+        const password = this.userPassword
+        location.href = `${url}/#/sso?username=${encodeURIComponent(username)}&password=${encodeURIComponent(password)}`
+      })
+
     }
   }
 }

+ 12 - 7
src/views/dm/user/index.vue

@@ -93,7 +93,7 @@
 
 <script>
 import crudDmUser from '@/api/dm/user/dmUser'
-import { getDmSystem } from '@/api/dm/system/dmSystem'
+import { getDmSystem, queryByUserId } from '@/api/dm/system/dmSystem'
 import { getDmAppMenu } from '@/api/dm/appMenu/dmAppMenu'
 import CRUD, { presenter, header, form, crud } from '@crud/crud'
 import rrOperation from '@crud/RR.operation'
@@ -141,12 +141,17 @@ export default {
     },
     systemConfigClick(data) {
       this.form = data
-      for (let i = 0; i < data.dmSystems.length; i++) {
-        this.dmUserSystem.push(data.dmSystems[i].id)
-      }
-      console.log('this.dmUserSystem', this.dmUserSystem)
-      this.systemConfig = true
-      this.getDmSystemList()
+      let dmSystems = []
+      queryByUserId(data.id).then(res => {
+        console.log("res:",res)
+        dmSystems = res
+        for (let i = 0; i < dmSystems.length; i++) {
+          this.dmUserSystem.push(dmSystems[i].id)
+        }
+        console.log('this.dmUserSystem', this.dmUserSystem)
+        this.systemConfig = true
+        this.getDmSystemList()
+      })
     },
     // 获取所有子系统
     getDmSystemList() {