From 254c2a69441dbd9ee9bcb1d134a05eb9da407d17 Mon Sep 17 00:00:00 2001
From: fuliqi <fuliqi@qq.com>
Date: 星期三, 10 七月 2024 14:03:05 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev
---
src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java | 10 ++++
src/main/java/com/ycl/jxkg/utils/CaffeineUtil.java | 68 ++++++++++++++++++++++++++++++++++
2 files changed, 77 insertions(+), 1 deletions(-)
diff --git a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java
index e2ff848..9e5ae5d 100644
--- a/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java
+++ b/src/main/java/com/ycl/jxkg/config/spring/security/RestAuthenticationProvider.java
@@ -1,11 +1,14 @@
package com.ycl.jxkg.config.spring.security;
+import com.github.benmanes.caffeine.cache.Cache;
+import com.ycl.jxkg.constants.CaffeineConstant;
import com.ycl.jxkg.context.WebContext;
import com.ycl.jxkg.enums.RoleEnum;
import com.ycl.jxkg.enums.UserStatusEnum;
import com.ycl.jxkg.service.AuthenticationService;
import com.ycl.jxkg.service.UserService;
+import com.ycl.jxkg.utils.CaffeineUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AuthenticationProvider;
import org.springframework.security.authentication.BadCredentialsException;
@@ -34,6 +37,7 @@
private final AuthenticationService authenticationService;
private final UserService userService;
private final WebContext webContext;
+ private final CaffeineUtil caffeineUtil;
/**
* Instantiates a new Rest authentication provider.
@@ -43,10 +47,11 @@
* @param webContext the web context
*/
@Autowired
- public RestAuthenticationProvider(AuthenticationService authenticationService, UserService userService, WebContext webContext) {
+ public RestAuthenticationProvider(AuthenticationService authenticationService, UserService userService, WebContext webContext, CaffeineUtil caffeineUtil) {
this.authenticationService = authenticationService;
this.userService = userService;
this.webContext = webContext;
+ this.caffeineUtil = caffeineUtil;
}
@Override
@@ -73,6 +78,9 @@
grantedAuthorities.add(new SimpleGrantedAuthority(RoleEnum.fromCode(user.getRole()).getRoleName()));
User authUser = new User(user.getUserName(), user.getPassword(), grantedAuthorities);
+
+ // 鐧诲綍涔嬪悗淇濆瓨鍒板唴瀛樹腑
+ caffeineUtil.put(CaffeineConstant.AUTH, authUser.getUsername(), authUser);
return new UsernamePasswordAuthenticationToken(authUser, authUser.getPassword(), authUser.getAuthorities());
}
diff --git a/src/main/java/com/ycl/jxkg/utils/CaffeineUtil.java b/src/main/java/com/ycl/jxkg/utils/CaffeineUtil.java
new file mode 100644
index 0000000..05ba205
--- /dev/null
+++ b/src/main/java/com/ycl/jxkg/utils/CaffeineUtil.java
@@ -0,0 +1,68 @@
+package com.ycl.jxkg.utils;
+
+import com.github.benmanes.caffeine.cache.Cache;
+import lombok.RequiredArgsConstructor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.Map;
+import java.util.Objects;
+
+/**
+ * caffeine 淇濆瓨銆佽幏鍙栧伐鍏�
+ *
+ * @author锛歺p
+ * @date锛�2024/7/10 11:50
+ */
+@Slf4j
+@Component
+@RequiredArgsConstructor
+public class CaffeineUtil {
+
+ private final Cache<String, Object> caffeineCache;
+
+ /**
+ * 淇濆瓨
+ *
+ * @param database 鏁版嵁搴�/ caffeine map鐨刱ey
+ * @param key map鐨刱ey
+ * @param value map鐨剉alue
+ */
+ public void put(String database, String key, Object value) {
+ Map<String, Object> map = (Map<String, Object>) caffeineCache.getIfPresent(database);
+ if (Objects.isNull(map)) {
+ log.error("缂撳瓨寮傚父");
+ map = new HashMap<>(128);
+ this.createDatabase(database, map);
+ return;
+ }
+ map.put(key, value);
+ }
+
+ /**
+ * 鑾峰彇
+ *
+ * @param database 鏁版嵁搴�/ caffeine map鐨刱ey
+ * @param key map鐨刱ey
+ */
+ public Object get(String database, String key) {
+ Map<String, Object> map = (Map<String, Object>) caffeineCache.getIfPresent(database);
+ if (Objects.isNull(map)) {
+ log.error("缂撳瓨寮傚父");
+ return null;
+ }
+ return map.get(key);
+ }
+
+ /**
+ * 鍒涘缓key
+ *
+ * @param database
+ * @param map
+ */
+ private void createDatabase(String database, Map<String, Object> map) {
+ caffeineCache.put(database, map);
+ }
+
+}
--
Gitblit v1.8.0