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