package com.project.ding.utils; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.GrantedAuthority; import java.util.Collections; import java.util.List; import java.util.Optional; public class SecurityUtils { /** * 获取当前登录用户的 ID */ public static String getUserId() { return getAuthentication() .map(auth -> (String) auth.getPrincipal()) .orElse(null); } public static List getUserRoles() { return getAuthentication() .map(auth -> auth.getAuthorities().stream() .map(GrantedAuthority::getAuthority) .toList()) .orElse(Collections.emptyList()); } /** * 判断当前用户是否拥有某个角色 * @param role 角色名称 */ public static boolean hasRole(String role) { return getUserRoles().contains(role); } /** * 获取当前认证信息 */ private static Optional getAuthentication() { return Optional.ofNullable(SecurityContextHolder.getContext().getAuthentication()); } }