SpringBoot 自定义拦截器,拦截token。存储在线程
0.服务流程
1.TokenInterceptor类
package com.javasm.Interceptor;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.HandlerInterceptor;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
/**
* @Author: GuoZheng
* @Version: 1.0
* @Date: 2023/9/25-17:42
* @Since: jdk1.8
* @Description:
*/
@Component
public class TokenInterceptor implements HandlerInterceptor {
private static final ThreadLocal<String> tokenHolder = new ThreadLocal<>();
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
String token = request.getHeader("X-token");
System.out.println("token:" + token);
tokenHolder.set(token);
return true;
}
@Override
public void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {
// 请求处理完毕后,清除ThreadLocal中的token
tokenHolder.remove();
}
public static String getToken() {
// System.out.println(tokenHolder.get());
return tokenHolder.get();
}
}
2.拦截器配置
package com.javasm.config;
import com.javasm.Interceptor.TokenInterceptor;
import org.springframework.context.annotation.Configuration;
import org.springframework.stereotype.Component;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
/**
* @Author: GuoZheng
* @Version: 1.0
* @Date: 2023/9/25-17:50
* @Since: jdk1.8
* @Description:
*/
@Configuration
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new TokenInterceptor()).addPathPatterns("/**");
}
}
3.Controller
@RequestMapping("pay4")
public String pay4() {
String token = TokenInterceptor.getToken();
return "支付" + port + "+" + token;
}
4.openfegin
@RestController
@FeignClient("gateway-test02")
public interface PayServiceController {
@RequestMapping("/api/pay2/pay4")
String getServerPay(@RequestHeader("X-token") String token);
}
5.最终效果
评论区