From f1d079f9c0b3d384090477ca54e0548373d62b57 Mon Sep 17 00:00:00 2001
From: zhongrj <646384940@qq.com>
Date: Thu, 16 Jan 2025 11:56:39 +0800
Subject: [PATCH] 配置修改
---
src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java | 78 +++++++++++++++++++++++++++++++++++++++
1 files changed, 78 insertions(+), 0 deletions(-)
diff --git a/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java b/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java
new file mode 100644
index 0000000..fd29d11
--- /dev/null
+++ b/src/main/java/com/genersoft/iot/vmp/conf/security/SecurityUtils.java
@@ -0,0 +1,78 @@
+package com.genersoft.iot.vmp.conf.security;
+
+import com.genersoft.iot.vmp.conf.security.dto.LoginUser;
+import org.springframework.security.authentication.AuthenticationManager;
+import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
+import org.springframework.security.core.Authentication;
+import org.springframework.security.core.context.SecurityContext;
+import org.springframework.security.core.context.SecurityContextHolder;
+import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
+
+import javax.security.sasl.AuthenticationException;
+
+public class SecurityUtils {
+
+ /**
+ * 描述根据账号密码进行调用security进行认证授权 主动调
+ * 用AuthenticationManager的authenticate方法实现
+ * 授权成功后将用户信息存入SecurityContext当中
+ * @param username 用户名
+ * @param password 密码
+ * @param authenticationManager 认证授权管理器,
+ * @see AuthenticationManager
+ * @return UserInfo 用户信息
+ */
+ public static LoginUser login(String username, String password, AuthenticationManager authenticationManager) throws AuthenticationException {
+ //使用security框架自带的验证token生成器 也可以自定义。
+ UsernamePasswordAuthenticationToken token =new UsernamePasswordAuthenticationToken(username,password);
+ Authentication authenticate = authenticationManager.authenticate(token);
+ SecurityContextHolder.getContext().setAuthentication(authenticate);
+ LoginUser user = (LoginUser) authenticate.getPrincipal();
+ return user;
+ }
+
+ /**
+ * 获取当前登录的所有认证信息
+ * @return
+ */
+ public static Authentication getAuthentication(){
+ SecurityContext context = SecurityContextHolder.getContext();
+ return context.getAuthentication();
+ }
+
+ /**
+ * 获取当前登录用户信息
+ * @return
+ */
+ public static LoginUser getUserInfo(){
+ Authentication authentication = getAuthentication();
+ if(authentication!=null){
+ Object principal = authentication.getPrincipal();
+ if(principal!=null && !"anonymousUser".equals(principal)){
+ LoginUser user = (LoginUser) authentication.getPrincipal();
+ return user;
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 获取当前登录用户ID
+ * @return
+ */
+ public static int getUserId(){
+ LoginUser user = getUserInfo();
+ return user.getId();
+ }
+
+ /**
+ * 生成BCryptPasswordEncoder密码
+ *
+ * @param password 密码
+ * @return 加密字符串
+ */
+ public static String encryptPassword(String password) {
+ BCryptPasswordEncoder passwordEncoder = new BCryptPasswordEncoder();
+ return passwordEncoder.encode(password);
+ }
+}
--
Gitblit v1.9.3