Spring Boot2 攔截器對靜態資源的放行


Spring Boot2 攔截器對靜態資源的放行

在前面的案例中,我們大量的使用了攔截器。SpringBoot2.x的攔截器會對靜態資源進行攔截。下面介紹以下如何在攔截路徑的同時,對靜態資源進行放行。在前后端分離的項目中,無需進行此操作,前后端分離項目中我們只需要返回狀態碼,由前端的路由實現頁面權限控制。

addResourceHandlers方法內,映射靜態資源

addInterceptors方法內指定放行規則

 /**
     * 指定靜態資源的位置 非前后端分離項目需要注冊
     * @param registry
     */
    @Override
    public void addResourceHandlers(ResourceHandlerRegistry registry) {
        /*靜態資源的位置*/
        registry.addResourceHandler("/static/**").addResourceLocations("classpath:/static/");
        registry.addResourceHandler("/templates/**").addResourceLocations("classpath:/templates/");
        /*放行swagger*/
        registry.addResourceHandler("swagger-ui.html")
                .addResourceLocations("classpath:/META-INF/resources/");
        registry.addResourceHandler("/webjars/**")
                .addResourceLocations("classpath:/META-INF/resources/webjars/");
    }

    /**
     * 注冊攔截器
     *
     * @param registry
     */
    @Override
    public void addInterceptors(InterceptorRegistry registry) {


        //放行路徑
        List<String> jwtExcludePatterns = new ArrayList();
        //druid
        jwtExcludePatterns.add("/druid/**");
        //swagger
        jwtExcludePatterns.add("/webjars/**");
        jwtExcludePatterns.add("/swagger/**");
        jwtExcludePatterns.add("/v2/**");
        jwtExcludePatterns.add("/swagger-ui.html/**");
        jwtExcludePatterns.add("/swagger-resources/**");
        //系統靜態資源的放行  前后端分離項目不用考慮靜態資源的放行,只需要驗權即可
        jwtExcludePatterns.add("/");
        jwtExcludePatterns.add("/index.html");
        jwtExcludePatterns.add("/css/**");
        jwtExcludePatterns.add("/js/**");
        //需要放行的接口
        jwtExcludePatterns.add("/sys/login");
        jwtExcludePatterns.add("/login");
        jwtExcludePatterns.add("//test/**");


        registry.addInterceptor(new JWTInterceptor())
                .addPathPatterns("/**")
                //放行的靜態資源列表
                .excludePathPatterns(jwtExcludePatterns);

        //注冊短信驗證碼接口的請求次數攔截器
        AccessInterceptor codeAccessInterceptor = getCodeAccessInterceptor();
        registry.addInterceptor(codeAccessInterceptor)
                .addPathPatterns(codeAccessInterceptor.getInterceptorUrl());


        //注冊手機號校驗攔截器
        registry.addInterceptor(getSMSValidateInterceptor())
                .addPathPatterns("/user/code");

        //用戶注冊參數校驗 已經使用全局校驗實現
//        registry.addInterceptor(getRegisterValidateInterceptor())
//                .addPathPatterns("/user/register");

    }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM