1.解析SecurityUtil
1.Object principal = getPrincipal();
private static Object getPrincipal() {
return SecurityContextHolder.getContext().getAuthentication().getPrincipal();
}
security类 security接口 security接口 map对象
SecurityContextHolder————SecurityContext————Authentication————Object
得到的结果如下截图LinkedHashMap类型 或者CustomUserDetails自定义类型
CustomUserDetails类型,自定义类型
public class CustomUserDetails implements UserDetails {
private String userId;
private String account;
private String password;
private String username;
private Boolean adminFlag;
private Boolean validUrlFlag;
private Boolean available;
private List<CustomAuthority> authorityList;
}
UserDetails类型, SPringSecurity框架提供
public interface UserDetails extends Serializable {
Collection<? extends GrantedAuthority> getAuthorities();
String getPassword();
String getUsername();
boolean isAccountNonExpired();
boolean isAccountNonLocked();
boolean isCredentialsNonExpired();
boolean isEnabled();
}
2.getOperatorId
从principal获得 principal.get("userId") 或 principal.getUserId()
3.isAdmin
principal).get("adminFlag") 或principal.getAdminFlag()
2.源码
package com.nebula.module.common.utils;
import com.nebula.module.platform.constant.Constants;
import java.util.LinkedHashMap;
public class SecurityUtil {
private static final String USER_ID_KEY = "userId";
private static final String USERNAME_KEY = "username";
private static final String ADMIN_FLAG_KEY = "adminFlag";
private static final String VALID_URL_FLAG = "validUrlFlag";
/**
* 判断是否登录
*
* @return 是否登录
*/
public static boolean isLogin() {
Object principal = getPrincipal();
boolean isLogin = true;
if (principal instanceof String) {
isLogin = !Constants.ANONYMOUS_USER.equals(principal.toString());
}
return isLogin;
}
/**
* 返修操作人ID
*
* @return 操作人ID
*/
public static String getOperatorId() {
Object principal = getPrincipal();
if (principal instanceof LinkedHashMap) {
return ((LinkedHashMap) principal).get(USER_ID_KEY).toString();
} else if (principal instanceof CustomUserDetails) {
return ((CustomUserDetails) principal).getUserId();
} else {
return "";
}
}
/**
* 返回登录人员是否admin
*
* @return 是否admin
*/
public static Boolean isAdmin() {
Object principal = getPrincipal();
if (principal instanceof LinkedHashMap) {
return (boolean) ((LinkedHashMap) principal).get(ADMIN_FLAG_KEY);
} else if (principal instanceof CustomUserDetails) {
return ((CustomUserDetails) principal).getAdminFlag();
} else {
return null;
}
}
/**
* 返回登录人员是否admin
*
* @param principal 授权信息map
* @return 是否admin
*/
public static Boolean isAdmin(Object principal) {
if (principal instanceof LinkedHashMap) {
return (boolean) ((LinkedHashMap) principal).get(ADMIN_FLAG_KEY);
} else if (principal instanceof CustomUserDetails) {
return ((CustomUserDetails) principal).getAdminFlag();
} else {
return null;
}
}
/**
* 返回是否验证url
*
* @param principal 授权信息map
* @return 是否验证url
*/
public static Boolean isValidUrl(Object principal) {
if (principal instanceof LinkedHashMap) {
return (boolean) ((LinkedHashMap) principal).get(VALID_URL_FLAG);
} else if (principal instanceof CustomUserDetails) {
return ((CustomUserDetails) principal).getValidUrlFlag();
} else {
return null;
}
}
/**
* 返回登录人员名称
*
* @return 登录人员名称
*/
public static String getOperatorName() {
Object principal = getPrincipal();
if (principal instanceof LinkedHashMap) {
return ((LinkedHashMap) principal).get(USERNAME_KEY).toString();
} else if (principal instanceof CustomUserDetails) {
return ((CustomUserDetails) principal).getUsername();
} else {
return "";
}
}
/**
* 获取用户详情
*
* @return 用户详情
*/
private static Object getPrincipal() {
return null;
}
}