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