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 extends UserDetails> 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();
|
}
|
}
|