登录校验
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
过滤器
@Slf4j
@WebFilter("/*")
public class LoginCheckFilter implements Filter {
@Override
public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
String uri = request.getRequestURI();
log.info("uri的值是: {}", uri);
if ("/login".equals(uri)) {
filterChain.doFilter(request, response);
return;
}
String token = request.getHeader("token");
if (token == null || token.equals("")) {
String json = new ObjectMapper().writeValueAsString(Result.error("NOT_LOGIN"));
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return;
}
try {
JwtUtils.parseJWT(token);
} catch (Exception e) {
String json = new ObjectMapper().writeValueAsString(Result.error("NOT_LOGIN"));
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return;
}
filterChain.doFilter(request, response);
}
}
@SpringBootApplication
@MapperScan("com.itheima.mapper")
@EnableAspectJAutoProxy
@ServletComponentScan
public class SpringBootDemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringBootDemoApplication.class, args);
}
}
拦截器
@Component
public class LoginCheckInterceptor implements HandlerInterceptor {
@Autowired
private Gson gson;
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("token");
if (!StringUtils.hasLength(token)){
String json = gson.toJson(Result.error("NOT_LOGIN"));
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return false;
}
try {
JwtUtils.parseJWT(token);
} catch (Exception e) {
String json = gson.toJson(Result.error("NOT_LOGIN"));
response.setContentType("application/json;charset=utf-8");
response.getWriter().write(json);
return false;
}
return true;
}
}
@Configuration
public class MvcConfig implements WebMvcConfigurer {
@Autowired
private LoginCheckInterceptor loginCheckInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(loginCheckInterceptor)
.addPathPatterns("/**")
.excludePathPatterns("/login");
}
}