business-card/src/main/java/cn/com/tenlion/config/CheckAuth.java

89 lines
3.1 KiB
Java
Raw Normal View History

2021-01-28 10:21:48 +08:00
package cn.com.tenlion.config;
import cn.com.tenlion.accesstokenmanager.AccessTokenManager;
import cn.com.tenlion.pojo.dtos.carduser.CardUserDTO;
import cn.com.tenlion.pojo.vos.carduser.CardUserVO;
import cn.com.tenlion.service.carduser.ICardUserService;
import cn.com.tenlion.util.AesUtil;
import com.github.pagehelper.util.StringUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
/**
* TODO
* @version 1.0
* @author LY
* @date 2021/1/27 12:20
*/
@Component
public class CheckAuth implements HandlerInterceptor {
@Autowired
private ICardUserService cardUserService;
/**
* 在请求处理之前进行调用Controller方法调用之前
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
try {
String path = request.getServletPath();
if(path.contains("release")){
return true;
}
String token = request.getHeader("token");
if(token == null || StringUtil.isEmpty(token)){
// response.setStatus(response.SC_METHOD_NOT_ALLOWED);
// response.addHeader("msg","token不合法");
response.sendError(response.SC_METHOD_NOT_ALLOWED,"token不合法");
return false;
}
CardUserDTO tokenManage = AccessTokenManager.getInstance().getKey(token);
if(tokenManage != null) {
AccessTokenManager.getInstance().updateLastActivityTime(token);
return true;
}else{
String aesDecoderToken = AesUtil.aesCommonDecoder(token,token);
CardUserDTO cardUserDTO = cardUserService.getCardUserById(aesDecoderToken);
if(cardUserDTO != null){
AccessTokenManager.getInstance().setKey(token,cardUserDTO);
AccessTokenManager.getInstance().updateLastActivityTime(token);
}
}
response.setStatus(response.SC_OK);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
/**
* 请求处理之后进行调用但是在视图被渲染之前Controller方法调用之后
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) {
System.out.println("执行了TestInterceptor的postHandle方法");
}
/**
* 在整个请求结束之后被调用也就是在DispatcherServlet 渲染了对应的视图之后执行主要是用于进行资源清理工作
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) {
System.out.println("执行了TestInterceptor的afterCompletion方法");
}
}