refactor: Spring Security 工具类优化

This commit is contained in:
Ray.Hao
2024-06-27 21:49:24 +08:00
2 changed files with 29 additions and 15 deletions

View File

@@ -1,64 +1,80 @@
package com.youlai.system.security.util; package com.youlai.system.security.util;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.convert.Convert;
import cn.hutool.core.util.StrUtil; import cn.hutool.core.util.StrUtil;
import com.youlai.system.common.constant.SystemConstants; import com.youlai.system.common.constant.SystemConstants;
import com.youlai.system.security.model.SysUserDetails; import com.youlai.system.security.model.SysUserDetails;
import org.springframework.security.core.Authentication; import org.springframework.security.core.Authentication;
import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.util.PatternMatchUtils;
import java.util.Collection; import java.util.Collection;
import java.util.Collections; import java.util.Collections;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
/**
* Spring Security 工具类
*
* @author Ray
* @since 2021/1/10
*/
public class SecurityUtils { public class SecurityUtils {
/** /**
* 获取当前登录人信息 * 获取当前登录人信息
* *
* @return SysUserDetails * @return Optional<SysUserDetails>
*/ */
public static SysUserDetails getUser() { public static Optional<SysUserDetails> getUser() {
Authentication authentication = SecurityContextHolder.getContext().getAuthentication(); Authentication authentication = SecurityContextHolder.getContext().getAuthentication();
if (authentication != null) { if (authentication != null) {
Object principal = authentication.getPrincipal(); Object principal = authentication.getPrincipal();
if (principal instanceof SysUserDetails) { if (principal instanceof SysUserDetails) {
return (SysUserDetails) authentication.getPrincipal(); return Optional.of((SysUserDetails) principal);
} }
} }
return null; return Optional.empty();
} }
/** /**
* 获取用户ID * 获取用户ID
* *
* @return Long * @return Long
*/ */
public static Long getUserId() { public static Long getUserId() {
Long userId = Convert.toLong(getUser().getUserId()); return getUser().map(SysUserDetails::getUserId).orElse(null);
return userId;
} }
/**
* 获取用户账号
*
* @return String 用户账号
*/
public static String getUsername() {
return getUser().map(SysUserDetails::getUsername).orElse(null);
}
/** /**
* 获取部门ID * 获取部门ID
* *
* @return * @return Long
*/ */
public static Long getDeptId() { public static Long getDeptId() {
return Convert.toLong(getUser().getDeptId()); return getUser().map(SysUserDetails::getDeptId).orElse(null);
} }
/** /**
* 获取数据权限范围 * 获取数据权限范围
* *
* @return DataScope * @return Integer
*/ */
public static Integer getDataScope() { public static Integer getDataScope() {
return Convert.toInt(getUser().getDataScope()); return getUser().map(SysUserDetails::getDataScope).orElse(null);
} }
@@ -84,8 +100,6 @@ public class SecurityUtils {
* 是否超级管理员 * 是否超级管理员
* <p> * <p>
* 超级管理员忽视任何权限判断 * 超级管理员忽视任何权限判断
*
* @return
*/ */
public static boolean isRoot() { public static boolean isRoot() {
Set<String> roles = getRoles(); Set<String> roles = getRoles();

View File

@@ -228,7 +228,7 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Override @Override
public UserInfoVO getCurrentUserInfo() { public UserInfoVO getCurrentUserInfo() {
String username = SecurityUtils.getUser().getUsername(); // 登录用户名 String username = SecurityUtils.getUsername();
// 获取登录用户基础信息 // 获取登录用户基础信息
SysUser user = this.getOne(new LambdaQueryWrapper<SysUser>() SysUser user = this.getOne(new LambdaQueryWrapper<SysUser>()