返回介绍

4.5 静态资源过滤

发布于 2025-04-26 13:16:44 字数 1417 浏览 0 评论 0 收藏

在一个实际项目中,并非所有的请求都需要经过 Spring Security 过滤器,有一些特殊的请求,例如静态资源等,一般来说并不需要经过 Spring Security 过滤器链,用户如果访问这些静态资源,直接返回对应的资源即可。

回顾 4.1.3 小节中关于 WebSecurity 的讲解,提到它里边维护了一个 ignoredRequests 变量,该变量记录的就是所有需要被忽略的请求,这些被忽略的请求将不再经过 Spring Security 过滤器。例如,笔者的静态资源目录结构如图 4-10 所示。

图 4-10 静态资源目录结构

现在这些静态资源的访问不需要经过 Spring Security 过滤器,具体配置方案如下:

    @Configuration
    public class SecurityConfig extends WebSecurityConfigurerAdapter {
       @Override
       public void configure(WebSecurity web) throws Exception {
           web.ignoring()
               .antMatchers("/login.html", "/css/**", "/js/**","/images/**");
       }
       @Override
       protected void configure(HttpSecurity http) throws Exception {
           http.authorizeRequests()
                   .anyRequest().authenticated()
                   .and()
                   .formLogin()
                   .and()
                   .csrf().disable();
       }
    }

重写 configure(WebSecurity) 方法,并配置需要忽略的请求,这些需要忽略的地址,最终都会被添加到 ignoredRequests 集合中,并最终以过滤器链的形式呈现出来。换句话说,上面的配置中一共包含了五个过滤器链:configure(WebSecurity) 方法中配置的四个以及 HttpSecurity 中配置的一个(即/**)。如果大家不能理解为什么会有五个过滤器链,可以回顾 4.1.3 小节中关于 WebSecurity 的分析以及 4.1.4 小节中关于 FilterChainProxy 的分析,这里不再赘述。

配置完成后,再次启动项目,此时不需要认证就可以访问/login.html 页面。

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。