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