【更新】token登陆验证方法提交。

This commit is contained in:
dongxiayu 2022-07-06 01:17:01 +08:00
parent 077fcbc42c
commit 96a70b722b
3 changed files with 86 additions and 0 deletions

View File

@ -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);
/**
* 获取当前登录用户的账户
*

View File

@ -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;
}
}

View File

@ -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;
}
/**
* 获取当前登录的用户账号
*