1.在pom.xml文件中下贴入以下代码
<!-- JWT -->
<dependency>
<groupId>com.auth0</groupId>
<artifactId>java-jwt</artifactId>
<version>3.4.0</version>
</dependency>
插入到dependencies中
2.创建一个拦截器类
贴入以下代码
public class Interceptor implements HandlerInterceptor {
/**
* 在DispatcherServlet之前执行
*
* @param request
* @param response
* @param handler
* @return
* @throws Exception
*/
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
System.out.println("拦截器生效");
//用HandlerMethod访问方法、方法上的注解、方法参数等等
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
//检查是否有PassToken注解,有则跳过认证
if (method.isAnnotationPresent(PassToken.class)) {
PassToken passToken = method.getAnnotation(PassToken.class);
if (passToken.required()) {
return true;
}
}
//获取请求头令牌
String token = request.getHeader("token");
if(token == null || token.length() == 0) {
System.out.println("没有登录");
return false;
}
//验证token
JWTVerifier jwtVerifier = JWT.require(Algorithm.HMAC256("123456")).build();
try {
jwtVerifier.verify(token);
return true;
}catch (JWTCreationException e) {
e.printStackTrace();
return false;
}
}
/**
* 在controller执行之后的DispatcherServlet之后执行
*
* @param request
* @param response
* @param handler
* @param modelAndView
* @throws Exception
*/
@Override
public void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {
}
/**
* 在页面渲染完成返回给客户端之前执行
*
* @param request
* @param response
* @param handler
* @param ex
* @throws Exception
*/
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
}
}
3.创建一个jwt工具类
4.在启动器中添加以下代码
//配置拦截器
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(authenticationInterceptor())//增加过滤的方法类
.addPathPatterns("/**");//定义过滤的范围
}
@Bean
public Interceptor authenticationInterceptor() {
return new Interceptor();
}
!!!记得调用WebMvcConfigurer接口
5.创建一个CustomAnnotation文件夹在其中创建一个PassToken接口
可以用来开关token
6.用postman调试,验证是否配置成功
成功配置