加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何配置spring拦截器来调用每个请求

发布时间:2020-12-16 03:41:51 所属栏目:安全 来源:网络整理
导读:我想以这样一种方式配置我的spring拦截器,即每次请求都应该调用它. 我在API-GATEWAY中使用拦截器(Spring-Boot) 从API-GATEWAY我打电话给其他微服务. 来自API-GATEWAY的其他微服务的调用工作正常. 我调用的其他服务是Node.js服务,另一方面,我的API-Gateway处

我想以这样一种方式配置我的spring拦截器,即每次请求都应该调用它.

>我在API-GATEWAY中使用拦截器(Spring-Boot)
>从API-GATEWAY我打电话给其他微服务.
>来自API-GATEWAY的其他微服务的调用工作正常.
>我调用的其他服务是Node.js服务,另一方面,我的API-Gateway处于弹簧启动状态.
>所有服务(Node.js Spring-Boot)都在Docker Container上运行.

我在Interceptor中面临一个问题.我想以这样的方式配置它:每次请求都应该调用preHandle()并执行我在其中编写的操作.

我注意到一个问题,我想在这里提一下.

如果我正在调用的服务已停止(未运行),Interceptor正在正常工作,并给我一个响应,如somename-service not found.
如果此时正在运行相同的服务,则不会执行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);


}
您必须将此拦截器添加到您的调度程序xml文件中:

这里有很好的样本:

> Spring MVC Interceptot
> Dzone Spring Interceptor

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读