package com.lxzn.auth; import com.lxzn.auth.security.UserJwt; import lombok.extern.slf4j.Slf4j; import org.springframework.security.core.Authentication; import org.springframework.security.core.context.SecurityContext; import org.springframework.security.core.context.SecurityContextHolder; import org.springframework.security.core.userdetails.UserDetails; @Slf4j public class SpringSecurityUtils { /** * 取得Authentication, 如当前SecurityContext为空时返回null. */ public static Authentication getAuthentication() { SecurityContext context = SecurityContextHolder.getContext(); if(context == null) return null; return context.getAuthentication(); } public static T getCurrentUser() { Authentication authentication = getAuthentication(); if (authentication == null) { return null; } Object principal = authentication.getPrincipal(); if (!(principal instanceof UserDetails)) { return null; } return (T) principal; } /** * 取得当前用户的id,如果当前用户与未登录,则返回null. */ public static String getCurrentUserId() { UserJwt springSecurityUserAuth = getCurrentUser(); if (springSecurityUserAuth == null) { return null; } return springSecurityUserAuth.getUserId(); } /** * 取得当前用户的id,如果当前用户与未登录,则返回null. */ public static String getCurrentUsername() { UserJwt springSecurityUserAuth = getCurrentUser(); if (springSecurityUserAuth == null) { return null; } return springSecurityUserAuth.getUsername(); } }