package com.xcong.excoin.common;
|
|
import cn.hutool.core.util.StrUtil;
|
import com.alibaba.fastjson.JSONObject;
|
import com.xcong.excoin.common.contants.AppContants;
|
import com.xcong.excoin.common.exception.GlobalException;
|
import com.xcong.excoin.modules.member.entity.MemberEntity;
|
import com.xcong.excoin.utils.RedisUtils;
|
import com.xcong.excoin.utils.SpringContextHolder;
|
import lombok.extern.slf4j.Slf4j;
|
import org.springframework.http.HttpRequest;
|
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
|
import org.springframework.security.core.Authentication;
|
import org.springframework.security.core.context.SecurityContextHolder;
|
|
import javax.servlet.http.HttpServletRequest;
|
import java.util.ArrayList;
|
|
/**
|
* 登陆用户工具类
|
*
|
* @author wzy
|
* @date 2020-05-14
|
**/
|
@Slf4j
|
public class LoginUserUtils {
|
|
private static final String ANON = "anonymousUser";
|
|
public static MemberEntity getAppLoginUser() {
|
if (SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(ANON)) {
|
throw new GlobalException("无法获取登陆信息");
|
} else {
|
return (MemberEntity) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
}
|
}
|
|
public static String getAppLoginUserToken() {
|
return (String) SecurityContextHolder.getContext().getAuthentication().getCredentials();
|
}
|
|
public static void resetAppLoginUser(MemberEntity memberEntity) {
|
String token = getAppLoginUserToken();
|
RedisUtils redisUtils = SpringContextHolder.getBean(RedisUtils.class);
|
String jsonStr = redisUtils.getString(AppContants.PC_LOGIN_PREFIX + token);
|
if (StrUtil.isNotBlank(jsonStr)) {
|
redisUtils.set(AppContants.PC_LOGIN_PREFIX + token, JSONObject.toJSONString(memberEntity));
|
} else {
|
redisUtils.set(AppContants.APP_LOGIN_PREFIX + token, JSONObject.toJSONString(memberEntity));
|
}
|
}
|
|
/**
|
* mybatis 拦截器专用
|
*
|
* @return MemberEntity
|
*/
|
public static MemberEntity getUser() {
|
if (SecurityContextHolder.getContext().getAuthentication() == null) {
|
return null;
|
}
|
|
if (SecurityContextHolder.getContext().getAuthentication().getPrincipal().equals(ANON)) {
|
return null;
|
} else {
|
return (MemberEntity) SecurityContextHolder.getContext().getAuthentication().getPrincipal();
|
}
|
}
|
|
public static boolean isBrowser(HttpServletRequest request) {
|
String userAgent = request.getHeader("user-agent");
|
if (userAgent.toLowerCase().contains("mobile") || userAgent.contains("CFNetwork") || userAgent.toLowerCase().contains("okhttp")) {
|
return false;
|
}
|
return true;
|
}
|
}
|