43 lines
1.6 KiB
Java
43 lines
1.6 KiB
Java
package com.example.vuedemov20.Token;
|
|
|
|
|
|
import com.example.vuedemov20.vueControll;
|
|
import org.springframework.stereotype.Component;
|
|
import org.springframework.web.servlet.HandlerInterceptor;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
import java.io.PrintWriter;
|
|
|
|
//token拦截器,对拦截下的接口检查其的token是否符合只有
|
|
// 在提供一个有效的token时才能通过验证,否则给出认证失败的响应。
|
|
@Component
|
|
public class TokenInterceptor implements HandlerInterceptor {
|
|
@Resource
|
|
RedisUtil redisUtil;
|
|
@Override
|
|
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)throws Exception{
|
|
//Axios 发起跨域请求前,浏览器也会首先发起 OPTIONS 预检请求。检查服务器是否允许跨域访问。
|
|
if(request.getMethod().equals("OPTIONS")){
|
|
response.setStatus(HttpServletResponse.SC_OK);
|
|
System.out.println("允许跨域访问");
|
|
return true;
|
|
}
|
|
|
|
response.setCharacterEncoding("utf-8");
|
|
String token = redisUtil.getTokens(vueControll.Username);
|
|
if(token != null){
|
|
boolean result = TokenGenerate.verify(token);
|
|
if(result){
|
|
System.out.println("通过拦截器");
|
|
return true;
|
|
}
|
|
}
|
|
response.setCharacterEncoding("UTF-8");
|
|
PrintWriter out = null;
|
|
response.getWriter().write("认证失败,错误码:50000");
|
|
return false;//原为false
|
|
}
|
|
}
|