一,编写拦截器

public class TokenInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
//若不是映射方法,直接通过
if (!(handler instanceof HandlerMethod)){
return true;
} HandlerMethod handlerMethod = (HandlerMethod)handler;
Method method = handlerMethod.getMethod();
if (method.isAnnotationPresent(PassToken.class)){
return true;
} if (method.isAnnotationPresent(RequireToken.class)){
String token = null;
//String token = request.getHeader("token");
Cookie[] cookies = request.getCookies();
for (Cookie cookie : cookies) {
if ("token".equals(cookie.getName())){
token = cookie.getValue();
break;
}
}
if (token == null){
throw new RuntimeException("无token信息,请重新登录");
} String username = JwtUtils.getUsernameFromToken(token);
if (username == null){
throw new RuntimeException("token信息错误");
} request.setAttribute("username", username + ",test");
return true;
} return false;
} @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 { }
}

二,配置拦截器

@Configuration
public class InterceptorConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(tokenInterceptor())
.addPathPatterns("/**");
} @Bean
public TokenInterceptor tokenInterceptor(){
return new TokenInterceptor();
} }

最新文章

  1. C语言学习 第四次作业总结
  2. Scala学习 —— 元组&映射
  3. ios crash 日志分析
  4. 《大话移动APP测试:Android与iOS应用测试指南》
  5. IOS四种保存数据的方式
  6. Cobalt Strike
  7. poj 1062 昂贵的聘礼(最短路 dijk+枚举)
  8. Jvm垃圾回收堆内存变化过程
  9. HDU 5834 Magic boy Bi Luo with his excited tree
  10. centos下修改hostname,ip,netmask,gateway,dns
  11. 关于自定义的 XIB cell上的 button如何在控制器里实现点击方法
  12. 手脱ASPack
  13. LDAP的用户需求
  14. SDN网络中hypervisor带来的控制器时延(Hypervisor位置的优化)
  15. [译文]Domain Driven Design Reference(六)—— 提炼战略设计
  16. java处理含有中文的字符串.
  17. PAT A1015 Reversible Primes (20 分)——进制转换,质数
  18. Android 截取屏幕图片并保存
  19. LeetCode 队列与BFS--岛屿的数量
  20. 【转】linux中inittab文件详解

热门文章

  1. RXJAVA之变换操作
  2. PHP_Code_Challenge 1~30
  3. python+pymysql访问mysql数据库
  4. const pointers
  5. Docker操作命令——查看、停止、删除容器
  6. 初识HTTP 图解 形象生动
  7. Matlab绘制子图subplot使用攻略
  8. 基于COCA词频表的文本词汇分布测试工具v0.2
  9. c语言gets函数
  10. QTree1 【题解】