【更新】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(); SysLoginUser getSysLoginUser();
/**
* 根据token获取当前登录用户
*
* @return 当前登录用户信息
* @author dongxiayu
* @date 2022/7/2 0:22
*/
SysLoginUser getSysLoginUserByToken(String token);
/** /**
* 获取当前登录用户如未登录则返回null不抛异常 * 获取当前登录用户如未登录则返回null不抛异常
* *
@ -72,6 +81,15 @@ public interface LoginContext {
*/ */
boolean hasLogin(); 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; 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.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes; 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.ServiceException;
import vip.xiaonuo.core.exception.enums.ServerExceptionEnum; import vip.xiaonuo.core.exception.enums.ServerExceptionEnum;
import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponse;
import java.util.Map;
import java.util.Objects;
/** /**
* HttpServlet工具类获取当前request和response * HttpServlet工具类获取当前request和response
@ -39,6 +46,11 @@ import javax.servlet.http.HttpServletResponse;
* @date 2020/3/30 15:09 * @date 2020/3/30 15:09
*/ */
public class HttpServletUtil { public class HttpServletUtil {
/** 编码 **/
private static final String ENCODED = "UTF-8";
/** 引用 **/
private static final String REFERER = "referer";
/** /**
* 获取当前请求的request对象 * 获取当前请求的request对象
@ -69,4 +81,24 @@ public class HttpServletUtil {
return requestAttributes.getResponse(); 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 javax.annotation.Resource;
import java.util.List; 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不抛异常 * 获取当前登录用户如未登录则返回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;
}
/** /**
* 获取当前登录的用户账号 * 获取当前登录的用户账号
* *