From 52f15705d063ec64a6f5bffcf50d056997c23f91 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 29 十一月 2023 12:40:33 +0800
Subject: [PATCH] 鉴权服务bug修复

---
 /dev/null                                                                                      |  158 --------------------------
 Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java |    6 
 Source/UBCS-WEB/src/views/monitor/log/operateLog.vue                                           |  177 +++++++++++++++++++++++++++++
 3 files changed, 182 insertions(+), 159 deletions(-)

diff --git a/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue b/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
deleted file mode 100644
index e5d653c..0000000
--- a/Source/UBCS-WEB/src/views/monitor/log/loginLog.vue
+++ /dev/null
@@ -1,158 +0,0 @@
-<template>
-  <basic-container>
-    <avue-crud :option="option"
-               :table-loading="loading"
-               :data="data"
-               ref="crud"
-               v-model="form"
-               :permission="permissionList"
-               :page.sync="page"
-               :before-open="beforeOpen"
-               @search-change="searchChange"
-               @search-reset="searchReset"
-               @current-change="currentChange"
-               @size-change="sizeChange"
-               @refresh-change="refreshChange"
-               @on-load="onLoad">
-    </avue-crud>
-  </basic-container>
-</template>
-
-<script>
-  import { listLogOperate } from "@/api/logs";
-  import {mapGetters} from "vuex";
-
-  export default {
-    data() {
-      return {
-        form: {},
-        selectionList: [],
-        query: {},
-        //鏄惁鏄笁鍛樼鐞嗗憳鏃ュ織
-        isAdmin: 0,
-        // LoginOrLogout:鐧诲綍鏃ュ織,auth:鎺堟潈鏃ュ織,operate:鎿嶄綔鏃ュ織
-        logType: "LoginOrLogout",
-        loading: true,
-        page: {
-          pageSize: 10,
-          currentPage: 1,
-          total: 0
-        },
-        option: {
-          height: 'auto',
-          calcHeight: 30,
-          columnBtn:false,
-          tip: false,
-          searchShow: true,
-          searchMenuSpan: 6,
-          border: true,
-          index: true,
-          viewBtn: true,
-          editBtn: false,
-          addBtn: false,
-          delBtn: false,
-          menuWidth: 120,
-          dialogType: 'drawer',
-          column: [
-            {
-              label: "鐢ㄦ埛鍚�",
-              prop: "userName",
-              search: true
-            },
-            {
-              label: "濮撳悕",
-              prop: "realName",
-              search: true
-            },
-            {
-              label: "鐢ㄦ埛ip",
-              prop: "ip"
-            },
-            {
-              label: "妯″潡",
-              prop: "model",
-              width:'160'
-            },
-            {
-              label: "鏃堕棿",
-              prop: "time"
-            },
-            {
-              label: "鎿嶄綔缁撴灉",
-              prop: "operateResult"
-            },
-            {
-              label: "鎻忚堪",
-              prop: "description"
-            },
-          ]
-        },
-        data: []
-      };
-    },
-    computed: {
-      ...mapGetters(["permission"]),
-      permissionList() {
-        return {
-          viewBtn: this.vaildData(this.permission.log_usual.log_usual_view, false)
-        };
-      },
-    },
-    methods: {
-      searchReset() {
-        this.query = {};
-        this.onLoad(this.page);
-      },
-      searchChange(params, done) {
-        this.query = params;
-        this.page.currentPage = 1;
-        this.onLoad(this.page, params);
-        done();
-      },
-      underscoreName(key) {
-        return key.replace(/([A-Z])/g, "_$1").toLowerCase();
-      },
-      beforeOpen(done, type) {
-        if (["edit", "view"].includes(type)) {
-          getUsualLogs(this.form.id).then(res => {
-            this.form = res.data.data;
-          });
-        }
-        done();
-      },
-      currentChange(currentPage){
-        this.page.currentPage = currentPage;
-      },
-      sizeChange(pageSize){
-        this.page.pageSize = pageSize;
-      },
-      refreshChange() {
-        this.onLoad(this.page, this.query);
-      },
-      onLoad(page, params = {}) {
-        let conditionMaps = {};
-        conditionMaps["conditionMap[is_admin]"] = this.isAdmin;
-        conditionMaps["conditionMap[log_type]"] = this.logType.trim();
-        if (params) {
-          Object.keys(params).forEach((key) => {
-            conditionMaps["conditionMap[" + this.underscoreName(key) + "_like]"] = params[key].trim();
-          });
-        }
-        this.loading = true;
-        listLogOperate(
-          page.currentPage, 
-          page.pageSize,
-          conditionMaps
-        ).then(res => {
-          const data = res.data.data;
-          this.page.total = data.total;
-          this.data = data.records;
-          this.loading = false;
-        });
-      }
-    }
-  };
-</script>
-
-<style>
-</style>
diff --git a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
index e69de29..b797733 100644
--- a/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
+++ b/Source/UBCS-WEB/src/views/monitor/log/operateLog.vue
@@ -0,0 +1,177 @@
+<template>
+  <basic-container>
+    <avue-crud :option="option"
+               :table-loading="loading"
+               :data="data"
+               ref="crud"
+               v-model="form"
+               :permission="permissionList"
+               :page.sync="page"
+               :before-open="beforeOpen"
+               @search-change="searchChange"
+               @search-reset="searchReset"
+               @current-change="currentChange"
+               @size-change="sizeChange"
+               @refresh-change="refreshChange"
+               @on-load="onLoad">
+    </avue-crud>
+  </basic-container>
+</template>
+
+<script>
+  import { listLogOperate } from "@/api/logs";
+  import {mapGetters} from "vuex";
+
+  export default {
+    data() {
+      return {
+        form: {},
+        selectionList: [],
+        query: {},
+        //鏄惁鏄笁鍛樼鐞嗗憳鏃ュ織
+        isAdmin: '',
+        // LoginOrLogout:鐧诲綍鏃ュ織,grant:鎺堟潈鏃ュ織,operate:鎿嶄綔鏃ュ織
+        logType: '',
+        loading: true,
+        page: {
+          pageSize: 10,
+          currentPage: 1,
+          total: 0
+        },
+        option: {
+          height: 'auto',
+          calcHeight: 30,
+          columnBtn:false,
+          tip: false,
+          searchShow: true,
+          searchMenuSpan: 6,
+          border: true,
+          index: true,
+          viewBtn: true,
+          editBtn: false,
+          addBtn: false,
+          delBtn: false,
+          menuWidth: 120,
+          dialogType: 'drawer',
+          column: [
+            {
+              label: "鐢ㄦ埛鍚�",
+              prop: "userName",
+              search: true,
+              width:'100'
+            },
+            {
+              label: "濮撳悕",
+              prop: "realName",
+              search: true,
+              width:'100'
+            },
+            {
+              label: "鐢ㄦ埛ip",
+              prop: "ip",
+              width:'100'
+            },
+            {
+              label: "妯″潡",
+              prop: "model",
+              width:'140'
+            },
+            {
+              label: "鏃堕棿",
+              prop: "time",
+              width:'160'
+            },
+            {
+              label: "鎿嶄綔缁撴灉",
+              prop: "operateResult",
+              width:'100'
+            },
+            {
+              label: "鎻忚堪",
+              prop: "description",
+              width:'300'
+            },
+          ]
+        },
+        data: []
+      };
+    },
+    computed: {
+      ...mapGetters(["permission"]),
+      permissionList() {
+        return {
+          viewBtn: this.vaildData(this.permission.log_usual.log_usual_view, false)
+        };
+      },
+    },
+    created() {
+      this.getRouteParam()
+    },
+    methods: {
+      //鑾峰彇鏁版嵁
+      getRouteParam() {
+        const logType = this.$route.query.log_type; // 鑾峰彇log_type鍙傛暟鐨勫��
+        const result = logType.substring(0, logType.indexOf(':')); // 鎴彇浠�0鍒癅涔嬮棿鐨勫瓙瀛楃涓�
+        const isAdmin = logType.substring(logType.indexOf(':')+1, logType.indexOf('@')); // 浠嶡涔嬪悗鎴彇鍒版湯灏剧殑瀛愬瓧绗︿覆
+        this.logType = result;
+        this.isAdmin = isAdmin;
+        //console.log(this.logType)
+        //console.log(this.isAdmin)
+      },
+      searchReset() {
+        this.query = {};
+        this.onLoad(this.page);
+      },
+      searchChange(params, done) {
+        this.query = params;
+        this.page.currentPage = 1;
+        this.onLoad(this.page, params);
+        done();
+      },
+      underscoreName(key) {
+        return key.replace(/([A-Z])/g, "_$1").toLowerCase();
+      },
+      beforeOpen(done, type) {
+        if (["edit", "view"].includes(type)) {
+          getUsualLogs(this.form.id).then(res => {
+            this.form = res.data.data;
+          });
+        }
+        done();
+      },
+      currentChange(currentPage){
+        this.page.currentPage = currentPage;
+      },
+      sizeChange(pageSize){
+        this.page.pageSize = pageSize;
+      },
+      refreshChange() {
+        this.onLoad(this.page, this.query);
+      },
+      onLoad(page, params = {}) {
+        let conditionMaps = {};
+        conditionMaps["conditionMap[is_admin]"] = this.isAdmin;
+        conditionMaps["conditionMap[log_type]"] = this.logType.trim();
+        if (params) {
+          Object.keys(params).forEach((key) => {
+            conditionMaps["conditionMap[" + this.underscoreName(key) + "_like]"] = params[key].trim();
+          });
+        }
+        this.loading = true;
+        listLogOperate(
+          page.currentPage, 
+          page.pageSize,
+          conditionMaps
+        ).then(res => {
+          const data = res.data.data;
+          this.page.total = data.total;
+          this.data = data.records;
+          this.loading = false;
+        });
+      }
+    }
+  };
+</script>
+
+<style>
+</style>
diff --git a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
index 9913f8b..eb886d5 100644
--- a/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
+++ b/Source/UBCS/ubcs-auth/src/main/java/com/vci/ubcs/auth/service/BladeUserDetailsServiceImpl.java
@@ -31,6 +31,7 @@
 import com.vci.ubcs.common.cache.CacheNames;
 import org.springblade.core.jwt.JwtUtil;
 import org.springblade.core.jwt.props.JwtProperties;
+import org.springblade.core.launch.constant.TokenConstant;
 import org.springblade.core.log.annotation.LoginOrLogoutLog;
 import org.springblade.core.redis.cache.BladeRedis;
 import org.springblade.core.secure.utils.AuthUtil;
@@ -110,6 +111,7 @@
 		// 鑾峰彇绉熸埛ID
 		String headerTenant = request.getHeader(TokenUtil.TENANT_HEADER_KEY);
 		String paramTenant = request.getParameter(TokenUtil.TENANT_PARAM_KEY);
+		String refreshToken = request.getParameter(TokenConstant.REFRESH_TOKEN);
 		String password = request.getParameter(TokenUtil.PASSWORD_KEY);
 		String grantType = request.getParameter(TokenUtil.GRANT_TYPE_KEY);
 		// 鍒ゆ柇绉熸埛璇锋眰澶�
@@ -139,7 +141,9 @@
 
 		//瓒呯骇绠$悊鍛橀厤缃枃浠堕厤缃处鍙峰瘑鐮侊紝瀹炵幇鐧诲綍, 榛樿绉熸埛id鍜岃秴绠′负閰嶇疆鍑烘潵鐨�
 		if(tenantId.equals(this.tenantId) && userName.equals(username)){
-			if (!this.userName.equals(username) || !BladePasswordEncoderFactories.createDelegatingPasswordEncoder().encode(password).equalsIgnoreCase(AuthConstant.ENCRYPT+this.password)) {
+			if (Func.isBlank(refreshToken)/*鍒锋柊token涓嶇敤鏍¢獙瀵嗙爜*/
+				&& (!this.userName.equals(username) || !BladePasswordEncoderFactories.createDelegatingPasswordEncoder().encode(password).equalsIgnoreCase(AuthConstant.ENCRYPT+this.password))
+			) {
 				setFailCount(tenantId, username, count,strategy.getLockingTime());
 				throw new UsernameNotFoundException(TokenUtil.USER_NOT_FOUND+"杩樻湁銆�"+(failCount-count)+"銆戞灏濊瘯鏈轰細!");
 			}

--
Gitblit v1.9.3