gpt4 book ai didi

java - 使用 Spring Security Filter 锁定除少数路由之外的所有内容

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:04:49 27 4
gpt4 key购买 nike

我们正在重新设计我们的产品以删除 SpringSecurity 中默认的“anonymousUser”行为,并希望锁定除少数端点之外的所有 URL(通过过滤器安全性)。我们想不通的是如何指定“锁定除 X、Y 和 Z 之外的所有内容”

我们的安全设置基本上归结为以下内容:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
// disable anonymous users
.anonymous().disable()

// don't add ROLE_ to the role...
.authorizeRequests()
.regexMatchers("^/", "^/login", "^/mobile/login", "^/api/auth/.*")
.authenticated()
.and()
;
}
}

我走过的其他路线类似于:

@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

@Override
protected void configure(HttpSecurity http) throws Exception {
http
// disable anonymous users
.anonymous().disable()

// don't add ROLE_ to the role...
.authorizeRequests()
.antMatchers("/**")
.authenticated()
.antMatchers("/", "/login", "/mobile/login", "/api/auth/**", "/reservations/**")
.permitAll()
.and()
;
}
}

任何建议/输入将不胜感激。

谢谢!

最佳答案

We're reworking our product to remove the default "anonymousUser"behavior in Spring Security

我想知道你这是什么意思。根据其余描述,我认为您不需要以下内容(即您应该删除它):

anonymous().disabled()

上面说用户将是null如果没有用户通过身份验证,这往往会导致 NullPointerException

请记住 authorizeRequests() (或 <intercept-url>)订购事宜。您拥有的 Java 配置(针对 readability 稍微重新格式化)

.authorizeRequests()
.antMatchers("/**").authenticated()
.antMatchers("/", "/login", "/mobile/login", "/api/auth/**", "/reservations/**").permitAll()
.and()

将使用以下逻辑:

  • 这个请求是否匹配“/**”?
    • 是的,一切都匹配“/**”。因此,每个请求都需要对用户进行身份验证。
  • 忽略所有其他规则,因为我们已经匹配

您应该使用以下内容:

.authorizeRequests()
.antMatchers("/", "/login", "/mobile/login", "/api/auth/**", "/reservations/**").permitAll()
.anyRequest().authenticated()
.and()
  • 请求是否匹配“/”或“/login”或...?
    • 如果是,则允许任何人访问它并停止(不再使用更多规则)。
    • 如果请求不匹配,则继续。
  • 请求是否匹配任何请求?
    • 是的,所以如果请求不匹配之前的规则,那么它将要求用户进行身份验证。

注:antMatchers("/**")更简洁地表示为 anyRequest() .

关于java - 使用 Spring Security Filter 锁定除少数路由之外的所有内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29522669/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com