From 2dd5433edfc33ac48ffd31455820883c305a6ab8 Mon Sep 17 00:00:00 2001
From: zhanzhiqin <895896009@qq.com>
Date: 星期五, 22 四月 2022 16:59:24 +0800
Subject: [PATCH] fix
---
ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java | 103 ++++++++++++++++++++-------------------------------
1 files changed, 40 insertions(+), 63 deletions(-)
diff --git a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
index 178f53d..d85bf94 100644
--- a/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
+++ b/ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java
@@ -1,27 +1,11 @@
-/**
- * Copyright (C) 2018-2020
- * All rights reserved, Designed By www.yixiang.co
- * 娉ㄦ剰锛�
- * 鏈蒋浠朵负www.yixiang.co寮�鍙戠爺鍒�
- */
package com.sandu.ximon.admin.security;
-import cn.hutool.json.JSONObject;
import com.sandu.common.enums.ResponseStatusEnums;
import com.sandu.common.execption.BusinessException;
-import com.sandu.common.redis.online.OnlineUser;
-import com.sandu.common.redis.online.OnlineUserService;
-import com.sandu.common.security.config.SecurityProperties;
-import com.sandu.common.security.jwt.JwtTokenProvider;
-import com.sandu.common.util.RequestHolder;
-import com.sandu.common.util.SpringContextHolder;
+import com.sandu.common.security.LoginUserInfo;
import com.sandu.ximon.dao.enums.AdministratorEnums;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
-import org.springframework.security.core.userdetails.UserDetails;
-import org.springframework.security.core.userdetails.UserDetailsService;
-
-import javax.servlet.http.HttpServletRequest;
/**
* 鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴�
@@ -32,39 +16,34 @@
public class SecurityUtils {
/**
- * 鑾峰彇鐢ㄦ埛淇℃伅
+ * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
*/
- private static UserDetails getUserDetails() {
+ public static LoginUserInfo getUserDetails() {
final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication == null) {
throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
}
- Integer administratorIdentity = getAdministratorIdentity();
- if (AdministratorEnums.ADMIN.getCode().equals(administratorIdentity) || AdministratorEnums.INSPECT_CUSTOMER.getCode().equals(administratorIdentity)) {
- UserDetails userDetails = (UserDetails) authentication.getPrincipal();
- UserDetailsService userDetailsService = SpringContextHolder.getBean("adminDetailsService");
- return userDetailsService.loadUserByUsername(userDetails.getUsername());
- } else if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
- UserDetails userDetails = (UserDetails) authentication.getPrincipal();
- UserDetailsService userDetailsService = SpringContextHolder.getBean("customerDetailsService");
- return userDetailsService.loadUserByUsername(userDetails.getUsername());
+ if (authentication.getPrincipal() instanceof LoginUserInfo) {
+ LoginUserInfo loginUserInfo = (LoginUserInfo) authentication.getPrincipal();
+ if (!loginUserInfo.isEnabled()) {
+ throw new BusinessException(ResponseStatusEnums.DISABLE_ACCOUNT.getCode(), ResponseStatusEnums.DISABLE_ACCOUNT.getMessage());
+ }
+ return loginUserInfo;
}
-
return null;
}
/**
- * 鑾峰彇绯荤粺鐢ㄦ埛鍚嶇О 鐧诲綍鍚�
+ * 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
*
- * @return 绯荤粺鐢ㄦ埛鍚嶇О
+ * @return 褰撳墠鐧诲綍鐢ㄦ埛鐧诲綍鍚�
*/
public static String getUsername() {
- final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- if (authentication == null) {
- throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo != null) {
+ return loginUserInfo.getUsername();
}
- UserDetails userDetails = (UserDetails) authentication.getPrincipal();
- return userDetails.getUsername();
+ return null;
}
/**
@@ -73,41 +52,39 @@
* @return
*/
public static Integer getAdministratorIdentity() {
- final Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
- if (authentication == null) {
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo == null) {
throw new BusinessException(ResponseStatusEnums.TOKEN_INVALID.getCode(), ResponseStatusEnums.TOKEN_INVALID.getMessage());
}
- return (Integer) authentication.getCredentials();
+ return loginUserInfo.getAdministratorType();
}
/**
- * 鑾峰彇绯荤粺鐢ㄦ埛id
+ * 鑾峰彇褰撳墠鐧诲綍璐﹀彿鐨刬d
*
- * @return 绯荤粺鐢ㄦ埛id
+ * @return 褰撳墠鐧诲綍璐﹀彿鐨刬d
*/
public static Long getUserId() {
- SecurityProperties properties = SpringContextHolder.getBean(SecurityProperties.class);
- if (!properties.isCacheOnline()) {
- UserDetails obj = getUserDetails();
- if (obj == null) {
- return null;
- }
- if (!obj.isEnabled()) {
- throw new BusinessException(ResponseStatusEnums.DISABLE_ACCOUNT.getCode(), ResponseStatusEnums.DISABLE_ACCOUNT.getMessage());
- }
- JSONObject json = new JSONObject(obj);
- return json.getJSONObject("user").get("id", Long.class);
- } else {
- HttpServletRequest httpServletRequest = RequestHolder.getHttpServletRequest();
- JwtTokenProvider tokenProvider = SpringContextHolder.getBean(JwtTokenProvider.class);
- OnlineUserService onlineUserService = SpringContextHolder.getBean(OnlineUserService.class);
- String username = tokenProvider.getSubjectForce(tokenProvider.getToken(httpServletRequest));
- OnlineUser one = onlineUserService.getOne(properties.getOnlineKey() + username);
- if (one != null) {
- return one.getUserId();
- } else {
- return null;
- }
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo != null) {
+ return loginUserInfo.getUserId();
}
+ return null;
+ }
+
+ /**
+ * 鑾峰彇瀹㈡埛璐﹀彿鐨刬d 濡傛灉褰撳墠韬唤鏄繍钀ヤ汉鍛橈紝杩斿洖null
+ *
+ * @return
+ */
+ public static Long getClientId() {
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo == null) {
+ return null;
+ }
+ if (!AdministratorEnums.ADMIN.getCode().equals(loginUserInfo.getAdministratorType())) {
+ return loginUserInfo.getUserId();
+ }
+ return null;
}
}
--
Gitblit v1.9.3