gpt4 book ai didi

rest - 如何避免自定义过滤器在 spring-security 中运行不安全的 url

转载 作者:行者123 更新时间:2023-12-01 05:00:40 30 4
gpt4 key购买 nike

我正在构建一个基于 REST 的 Web 应用程序,我已经成功地对其应用了 Spring Security,但我担心的是我已经添加了一个自定义过滤器

http
.authorizeRequests()
.antMatchers("/mypro/userCont/signup").permitAll()
.and()
.addFilterBefore(new CustomFilter(), UsernamePasswordAuthenticationFilter.class)
.httpBasic();

我希望这个过滤器应该只针对安全的 url 而不是不安全的 url 如果它针对非安全的 url 运行那么它不应该打断我在非安全的 url 上获取资源。我的场景是,如果用户未登录,则应运行安全 url 自定义过滤器,使用以下代码检查 Principal:

Authentication auth = (Authentication) SecurityContextHolder.getContext().getAuthentication();

如果 authnull 用户应该看到默认的 spring security 登录弹出窗口如果我点击不安全的 url,我应该访问该资源。谁能帮帮我。

最佳答案

您可以通过配置 WebSecurity 完全跳过特定资源的安全性。在这种情况下,Spring 安全将完全忽略该 URL 模式:

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
public void configure(WebSecurity webSecurity) throws Exception
{
webSecurity
.ignoring()
.antMatchers("/resources/**"); //skip security entirely
}

@Override
public void configure(HttpSecurity http) throws Exception {
http
.addFilter(mycustomFilter)
.authorizeRequests().anyRequest()
.and()
.httpBasic();
}
}

或者,您可以简单地使用 permitAll() 方法来排除您需要允许匿名访问的那些。

@Configuration
@EnableWebSecurity
public class SecurityConfiguration extends WebSecurityConfigurerAdapter {

@Override
public void configure(HttpSecurity http) throws Exception {
http
.addFilter(mycustomFilter)
.authorizeRequests()
.antMatchers("/not-secured/**").permitAll()
.and()
.httpBasic();
}
}

关于rest - 如何避免自定义过滤器在 spring-security 中运行不安全的 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30287845/

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