1.在interceptor下添加LoginInterceptor.java
package com.xiaoguan.interceptor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.xiaoguan.untils.JWTUtils;
import com.xiaoguan.untils.JsonData;
import io.jsonwebtoken.Claims;
import org.apache.commons.lang3.StringUtils;
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.PrintWriter;
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
try{
String accesToken = request.getHeader("token");
if(accesToken ==null){
accesToken = request.getParameter("token");
}
if(StringUtils.isNoneBlank(accesToken)){
Claims claims = JWTUtils.checkJWT(accesToken);
if(claims == null){
sendJsonMessage(response,JsonData.buildError("登录过期,重新登录"));
return false;
}
Integer id = (Integer)claims.get("id");
String name = (String) claims.get("name");
request.setAttribute("user_id",id);
request.setAttribute("name",name);
return true;
}
}catch (Exception e){
}
sendJsonMessage(response,JsonData.buildError("登录过期,重新登录"));
return false;
}
private void sendJsonMessage(HttpServletResponse response, Object obj) {
try {
ObjectMapper objectMapper = new ObjectMapper();
response.setContentType("application/json; charset=utf-8");
PrintWriter writer = response.getWriter();
writer.print(objectMapper.writeValueAsString(obj));
writer.close();
response.flushBuffer();
}catch (Exception e){
e.printStackTrace();
}
}
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
2.在InterceptorConfig.java
package com.xiaoguan.config;
import com.xiaoguan.interceptor.LoginInterceptor;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Bean
LoginInterceptor loginInterceptor(){
return new LoginInterceptor();
}
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginInterceptor()).addPathPatterns("/api/v1/pri/*/*/**")
.excludePathPatterns("/api/v1/pri/user/login","/api/v1/pri/user/register");
WebMvcConfigurer.super.addInterceptors(registry);
}
}