【更新】token登陆验证方法提交。
This commit is contained in:
parent
077fcbc42c
commit
96a70b722b
@ -45,6 +45,15 @@ public interface LoginContext {
|
||||
*/
|
||||
SysLoginUser getSysLoginUser();
|
||||
|
||||
/**
|
||||
* 根据token获取当前登录用户
|
||||
*
|
||||
* @return 当前登录用户信息
|
||||
* @author dongxiayu
|
||||
* @date 2022/7/2 0:22
|
||||
*/
|
||||
SysLoginUser getSysLoginUserByToken(String token);
|
||||
|
||||
/**
|
||||
* 获取当前登录用户,如未登录,则返回null,不抛异常
|
||||
*
|
||||
@ -72,6 +81,15 @@ public interface LoginContext {
|
||||
*/
|
||||
boolean hasLogin();
|
||||
|
||||
/**
|
||||
* 根据token判断用户是否登录
|
||||
*
|
||||
* @return 是否登录,true是,false否
|
||||
* @author dongxiayu
|
||||
* @date 2022/7/2 0:22
|
||||
*/
|
||||
boolean hasLoginByToken(String token);
|
||||
|
||||
/**
|
||||
* 获取当前登录用户的账户
|
||||
*
|
||||
|
@ -24,13 +24,20 @@ Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意
|
||||
*/
|
||||
package vip.xiaonuo.core.util;
|
||||
|
||||
import cn.hutool.core.util.CharsetUtil;
|
||||
import cn.hutool.core.util.StrUtil;
|
||||
import cn.hutool.http.HttpUtil;
|
||||
import org.springframework.web.context.request.RequestContextHolder;
|
||||
import org.springframework.web.context.request.ServletRequestAttributes;
|
||||
import vip.xiaonuo.core.consts.CommonConstant;
|
||||
import vip.xiaonuo.core.context.constant.ConstantContextHolder;
|
||||
import vip.xiaonuo.core.exception.ServiceException;
|
||||
import vip.xiaonuo.core.exception.enums.ServerExceptionEnum;
|
||||
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import java.util.Map;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* HttpServlet工具类,获取当前request和response
|
||||
@ -39,6 +46,11 @@ import javax.servlet.http.HttpServletResponse;
|
||||
* @date 2020/3/30 15:09
|
||||
*/
|
||||
public class HttpServletUtil {
|
||||
/** 编码 **/
|
||||
private static final String ENCODED = "UTF-8";
|
||||
|
||||
/** 引用 **/
|
||||
private static final String REFERER = "referer";
|
||||
|
||||
/**
|
||||
* 获取当前请求的request对象
|
||||
@ -69,4 +81,24 @@ public class HttpServletUtil {
|
||||
return requestAttributes.getResponse();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 从header.referer获取token信息
|
||||
* @author dongxiayu
|
||||
* @date 2022/7/2 0:46
|
||||
* @return
|
||||
**/
|
||||
public static String getTokenFromReferer(){
|
||||
String refererContent = HttpServletUtil.getRequest().getHeader(REFERER);
|
||||
Map<String,String> paramMap = HttpUtil.decodeParamMap(refererContent, CharsetUtil.charset(ENCODED));
|
||||
String token = Objects.nonNull(paramMap)?paramMap.get(CommonConstant.TOKEN_NAME):null;
|
||||
if(StrUtil.isNotBlank(token)){
|
||||
// 判断是否开启了加密
|
||||
if (ConstantContextHolder.getCryptogramConfigs().getTokenEncDec()) {
|
||||
// 解密token
|
||||
token = CryptogramUtil.doDecrypt(token);
|
||||
}
|
||||
}
|
||||
return token;
|
||||
}
|
||||
}
|
||||
|
@ -45,6 +45,7 @@ import vip.xiaonuo.sys.modular.user.service.SysUserService;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
|
||||
/**
|
||||
* 登录用户上下文实现类
|
||||
@ -81,6 +82,19 @@ public class LoginContextSpringSecurityImpl implements LoginContext {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据token获取当前登录用户
|
||||
*
|
||||
* @param token
|
||||
* @return 当前登录用户信息
|
||||
* @author dongxiayu
|
||||
* @date 2022/7/2 0:22
|
||||
*/
|
||||
@Override
|
||||
public SysLoginUser getSysLoginUserByToken(String token) {
|
||||
return authService.getLoginUserByToken(token);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录用户,如未登录,则返回null,不抛异常
|
||||
*
|
||||
@ -124,6 +138,28 @@ public class LoginContextSpringSecurityImpl implements LoginContext {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据token判断用户是否登录
|
||||
*
|
||||
* @param token
|
||||
* @return 是否登录,true是,false否
|
||||
* @author dongxiayu
|
||||
* @date 2022/7/2 0:22
|
||||
*/
|
||||
@Override
|
||||
public boolean hasLoginByToken(String token) {
|
||||
boolean ret = false;
|
||||
try {
|
||||
SysLoginUser sysLoginUser = authService.getLoginUserByToken(token);
|
||||
if(Objects.nonNull(sysLoginUser)){
|
||||
ret = true;
|
||||
}
|
||||
}catch (Exception e){
|
||||
ret = false;
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录的用户账号
|
||||
*
|
||||
|
Loading…
x
Reference in New Issue
Block a user