From a2f23bc97d133bcf7b950cd269eda577be4c0cac Mon Sep 17 00:00:00 2001
From: chenjiantian <214228265@qq.com>
Date: 星期一, 17 一月 2022 17:57:44 +0800
Subject: [PATCH] token优化
---
ximon-admin/src/main/java/com/sandu/ximon/admin/security/SecurityUtils.java | 87 +++++++++++++------------------------------
1 files changed, 26 insertions(+), 61 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 0a2c449..0bbccb2 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;
/**
* 鑾峰彇褰撳墠鐧诲綍鐨勭敤鎴�
@@ -34,22 +18,18 @@
/**
* 鑾峰彇褰撳墠鐧诲綍鐢ㄦ埛淇℃伅
*/
- private static UserDetails getUserDetails() {
+ private 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)) {
- 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;
}
@@ -59,12 +39,11 @@
* @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,11 +52,11 @@
* @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();
}
/**
@@ -86,39 +65,25 @@
* @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() {
- Integer administratorIdentity = SecurityUtils.getAdministratorIdentity();
- if (AdministratorEnums.CUSTOMER.getCode().equals(administratorIdentity)) {
- return SecurityUtils.getUserId();
+ LoginUserInfo loginUserInfo = getUserDetails();
+ if (loginUserInfo == null) {
+ return null;
+ }
+ if (AdministratorEnums.CUSTOMER.getCode().equals(loginUserInfo.getAdministratorType())) {
+ return loginUserInfo.getUserId();
}
return null;
}
--
Gitblit v1.9.3