SecurityUtil

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;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

飘然生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值