我想配置我的彈簧攔截器,使得每個請求都應該被調用。如何配置彈簧攔截器以便在每個請求中調用
- 我使用攔截器在API網關(彈簧引導)
- 從API網關我呼籲其他微服務。
- 來自API-GATEWAY的其他微服務的調用工作正常。
- 其他服務,我打電話是Node.js服務,另一方面,我的API網關是在春季啓動。
- 所有服務(Node.js + Spring-Boot)都在Docker Container上運行。
我在Interceptor中遇到了一個問題。我想以這樣的方式對它進行配置,使得每次請求都應該被稱爲preHandle()
,並執行我寫入的操作。
我注意到一個我想在這裏提到的問題。
如果我正在調用的服務已停止(不運行),Interceptor正常工作並給我一個未找到的somename-service響應。 如果相同的服務正在運行,此時Interceptor不會執行。
這裏是我的代碼片段
@EnableEurekaClient
@SpringBootApplication
@EnableZuulProxy
@Configuration
public class Application extends WebMvcConfigurerAdapter {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
@Autowired
private TokenValidateInterceptor tokenValidateInterceptor;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(tokenValidateInterceptor).addPathPatterns("/**");
}
攔截
@Component
public class TokenValidateInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
LOG.info("#### Starting TokenValidateInterceptor.preHandle ####");
String apiKey = null;
try {
apiKey = request.getHeader("apikey");
LOG.info("The request come with apikey ======" + apiKey);
LOG.info("Actual apikey ======" + azureApikey);
}
那麼你的TokenValidateInterceptor樣子? – aksss
我已更新我的問題,並把TokenValidateInterceptor代碼。 –