美文网首页
配置server.servlet.context-path 后

配置server.servlet.context-path 后

作者: 沐羽轩 | 来源:发表于2018-12-21 11:01 被阅读0次

    本人小白,在学习spring boot的时候遇到一个问题,自己在写拦截器的时候遇到的。
    WebMvcConfigurerAdapter 这个已经被废弃,所以用 WebMvcConfigurationSupport。
    配置拦截路径时,如果设置了

    server.servlet.context-path = /api
    

    在重写 addInterceptors 的时候拦截路径上不能有 /api
    例如:

    @Override
        protected void addInterceptors(final InterceptorRegistry registry)
        {
            // 注册自定义拦截器,添加拦截路径和排除拦截路径
            registry.addInterceptor(new LoginInterceptor())
                    .addPathPatterns("/api/**")
                    .excludePathPatterns(
                            "/error",
                            "/api/index",
                            "/api/loginIn"
                    );
            super.addInterceptors(registry);
        }
    

    这样会导致拦截器不生效。
    一开始我没有意识到是 server.servlet.context-path 的问题。后来经过无数次尝试。终于发现是 server.servlet.context-path 影响了。
    所以正确的写法是忽略 /api ,直接写 controller 映射的地址。

    @Override
        protected void addInterceptors(final InterceptorRegistry registry)
        {
            // 注册自定义拦截器,添加拦截路径和排除拦截路径
            registry.addInterceptor(new LoginInterceptor())
                    .addPathPatterns("/**")
                    .excludePathPatterns(
                            "/error",
                            "/index",
                            "/loginIn",
                            "/login",
                            "/logout",
                            "/register"
                    );
            super.addInterceptors(registry);
        }
    

    本人从零学的spring boot,不懂server.servlet.context-path 的原理。大神们轻喷。
    记录下,希望能帮到同样遇到类似问题的新手们。

    相关文章

      网友评论

          本文标题:配置server.servlet.context-path 后

          本文链接:https://www.haomeiwen.com/subject/waqmkqtx.html