This commit is contained in:
2025-12-18 16:48:45 +08:00
parent b97f0da746
commit 41cbe2bd54
80 changed files with 5434 additions and 351 deletions

View File

@@ -7,7 +7,7 @@ import org.springframework.stereotype.Component;
import org.xyzh.common.core.domain.LoginDomain;
import org.xyzh.common.dto.sys.TbSysUserDTO;
import org.xyzh.common.dto.sys.TbSysUserInfoDTO;
import org.xyzh.common.utils.IDUtils;
import org.xyzh.common.utils.id.IdUtil;
import javax.crypto.SecretKey;
import java.util.Date;
@@ -55,7 +55,7 @@ public class JwtTokenUtil {
return Jwts.builder()
.setClaims(claims)
.setSubject(user.getUserId())
.setId(IDUtils.generateID()) // 使用IDUtils生成JWT ID
.setId(IdUtil.generateID()) // 使用IdUtil生成JWT ID
.setIssuedAt(new Date())
.setExpiration(generateExpirationDate())
.signWith(getSigningKey())

View File

@@ -0,0 +1,116 @@
package org.xyzh.common.auth.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import org.xyzh.common.core.domain.LoginDomain;
import org.xyzh.common.redis.service.RedisService;
import jakarta.annotation.PostConstruct;
import jakarta.servlet.http.HttpServletRequest;
/**
* @description 登录用户工具类从Redis获取当前登录用户信息
* @filename LoginUtil.java
* @author yslg
* @copyright xyzh
* @since 2025-12-17
*/
@Component
public class LoginUtil {
private static final String AUTHORIZATION_HEADER = "Authorization";
private static final String BEARER_PREFIX = "Bearer ";
private static final String LOGIN_TOKEN_PREFIX = "login:token:";
@Autowired
private RedisService redisService;
private static LoginUtil instance;
@PostConstruct
public void init() {
instance = this;
}
/**
* 获取当前登录用户信息
*/
public static LoginDomain getCurrentLogin() {
String token = getToken();
if (!StringUtils.hasText(token)) {
return null;
}
try {
String cacheKey = LOGIN_TOKEN_PREFIX + token;
Object obj = instance.redisService.get(cacheKey);
if (obj instanceof LoginDomain) {
return (LoginDomain) obj;
}
} catch (Exception e) {
// 忽略异常
}
return null;
}
/**
* 获取当前用户ID
*/
public static String getCurrentUserId() {
LoginDomain login = getCurrentLogin();
if (login != null && login.getUser() != null) {
return login.getUser().getUserId();
}
return null;
}
/**
* 获取当前用户名
*/
public static String getCurrentUserName() {
LoginDomain login = getCurrentLogin();
if (login != null && login.getUserInfo() != null) {
return login.getUserInfo().getUsername();
}
return null;
}
/**
* 判断用户是否已登录
*/
public static boolean isLoggedIn() {
return getCurrentLogin() != null;
}
/**
* 从请求头获取Token
*/
public static String getToken() {
HttpServletRequest request = getRequest();
if (request == null) {
return null;
}
String authHeader = request.getHeader(AUTHORIZATION_HEADER);
if (StringUtils.hasText(authHeader) && authHeader.startsWith(BEARER_PREFIX)) {
return authHeader.substring(BEARER_PREFIX.length());
}
return null;
}
/**
* 获取当前请求
*/
private static HttpServletRequest getRequest() {
ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
if (attributes != null) {
return attributes.getRequest();
}
return null;
}
}