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