在 Spring 安全性中允许除一个之外的所有 URL

Posted

技术标签:

【中文标题】在 Spring 安全性中允许除一个之外的所有 URL【英文标题】:Allow all URLs but one in Spring security 【发布时间】:2016-07-22 19:59:15 【问题描述】:

我只想保护一个 URL,同时允许匿名访问其他所有内容。

我在互联网上看到的 Java 配置示例似乎都表明您需要明确地 permitAll 每个 URL,并为需要保护的 URL 适当的 hasRole。在我的情况下,这会创建一个非常笨拙的 Java 代码,每次我向应用程序添加新 URL 时都会修改它。有没有我可以使用的更简单的 java 配置。

还要注意,在我的情况下,我保护的 URL 是一个子资源,比如 employee/me,我希望 employee/list 等可以匿名访问。

【问题讨论】:

【参考方案1】:

如果您使用 Java 配置,您可以在 configure 方法中使用类似以下内容:

@Override
protected void configure(HttpSecurity http) throws Exception 
    http
            .authorizeRequests()
                .antMatchers("/employee/me").authenticated()
                .antMatchers("/**").permitAll();

【讨论】:

谢谢,这行得通,我实际上给了一个错误的命令,导致它失败。

以上是关于在 Spring 安全性中允许除一个之外的所有 URL的主要内容,如果未能解决你的问题,请参考以下文章

在 Spring 中允许并发的正确 Bean 的 proxyMode 是啥?

在jetbrains骑手中允许不安全的代码?

增加MySQL中允许的最大u包数

如何在 JetBrains Rider 中允许不安全的代码?

无法在 Spring Security 3 中允许静态资源

Spring Boot 2 安全性 - 预认证令牌 - 允许运行状况检查