gpt4 book ai didi

Spring Boot + Spring Security PermitAll() 和 addFilter() 配置不起作用

转载 作者:行者123 更新时间:2023-12-02 06:42:58 26 4
gpt4 key购买 nike

  1. 带有/login 的 URL 模式应该经过 LoginFilter,其中验证用户 ID 和密码 - 工作正常
  2. 带有/users/register 的 URL 模式不应通过任何文件管理器,但它始终通过 JWTAuthentication 过滤器 - 无法正常工作
  3. 所有其他 URL 模式都应通过 JWTAuthentication 过滤器进行授权 - 工作正常

下面是我的安全配置代码。请帮助我解决这段代码中缺少的内容。如何配置过滤器,以便对/login 和/register 之外的 URL 模式进行 JWT 身份验证

Spring-security-core:4.2.3,spring-boot:1.5.4

 protected void configure(HttpSecurity http) throws Exception {
http.csrf().disable().authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers(HttpMethod.POST, "/login").permitAll()
.antMatchers(HttpMethod.POST, "/users/register").permitAll()
.anyRequest().authenticated()
.and()
// We filter the api/login requests
.addFilterBefore(new LoginFilter("/login", authenticationManager()),
UsernamePasswordAuthenticationFilter.class)
// And filter other requests to check the presence of JWT in header
.addFilterBefore(new NoLoginAuthenticationFilter("/users/register"), UsernamePasswordAuthenticationFilter.class)
.addFilterBefore(new JWTAuthenticationFilter("/**", authenticationManager()),
UsernamePasswordAuthenticationFilter.class);

}

最佳答案

您想要的是忽略某些 URL。为此,重写采用 WebSecurity 对象并忽略模式的配置方法。

尝试将以下方法重写添加到您的配置类中。

@Override
public void configure(WebSecurity web) throws Exception {
web
.ignoring()
.antMatchers("/users/register/**");
}

关于Spring Boot + Spring Security PermitAll() 和 addFilter() 配置不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49561525/

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