当前位置: 首页 > 知识库问答 >
问题:

Spring Security配置--HttpSecurity与WebSecurity

楚鸿波
2023-03-14
@Configuration
public class SecurityConfig extends WebSecurityConfigurerAdapter {

    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http
            .httpBasic()
            .and()
            .authorizeRequests().antMatchers("/secret/**").authenticated()
            .and()
            .authorizeRequests().antMatchers("/**").permitAll();
    }

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

}

共有1个答案

唐运诚
2023-03-14

WebSecurityIglishing()方法的一般使用省略了Spring Security,并且Spring Security的任何特性都不可用。WebSecurity基于HttpSecurity之上。

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

@Override
protected void configure(HttpSecurity http) throws Exception {
    http
        .authorizeRequests()
        .antMatchers("/admin/**").hasRole("ADMIN")
        .antMatchers("/publics/**").hasRole("USER") // no effect
        .anyRequest().authenticated();
}

上面示例中的WebSecurity让Spring忽略/resources/**/publics/**。因此,不考虑HttpSecurity中的.antmatchers(“/publics/**”).hasrole(“user”)

这将从安全筛选器链中完全省略请求模式。请注意,匹配此路径的任何内容都将不应用身份验证或授权服务,并且可以自由访问。

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

@Override
public void configure(HttpSecurity http) throws Exception {

    http
        .csrf().disable()
        .authorizeRequests()
        .antMatchers("/login", "/register", "/api/public/**").permitAll()
        .anyRequest().authenticated();
}
 类似资料:
  • 到目前为止我们的 SecurityConfig 只包含了关于如何验证我们的用户的信息。Spring Security怎么知道我们想对所有的用户进行验证?Spring Security怎么知道我们需要支持基于表单的验证?原因是WebSecurityConfigurerAdapter在 configure(HttpSecurity http) 方法提供了一个默认的配置,看起来和下面类似: protec

  • 我试图理解RequestMatcher、AntMatcher等是如何工作的。我读了一些帖子,了解了基础知识。实际上,我有一个简单的基本配置: 我真的不明白第1、2、3点。根据我的理解,这意味着和的请求是映射的,应该是授权请求。所有其他请求都需要authenticatoin。 从我的角度来看,这应该是与第一个配置相同的逻辑。但实际上endpoint不再可访问。 我非常感谢你的澄清 更新1: 这是可以

  • 我是Spring Security的新手,我正在尝试使用Spring Security创建一个登录表单。 这是必需的方案: 1)用户使用用户名-密码登录应用程序(请注意,我使用的是Spring Security提供的默认登录页面)2)如果登录正常,用户会转到eventList.jsp3)如果登录为KO(错误的凭据),则会显示错误 My WebSecurityConfigurerAdapter co

  • 我们可以配置多个HttpSecurity实例,就像我们可以有多个块抑郁。关键在于对WebSecurityConfigurationAdapter进行多次扩展。例如下面是一个对/api/开头的URL进行的不同的设置。 @EnableWebSecurity public class MultiHttpSecurityConfig { @Autowired public void con

  • 我使用的Spring安全与oAuth2,但我有一个问题,我没有找到任何答案,在许多项目的例子,你有2次配置(HttpSecurity超文本传输协议)。 例如在https://github.com/spring-projects/spring-security-oauth/blob/master/samples/oauth2/sparklr/src/main/java/org/springframe

  • 问题内容: 我目前正在评估基于Java的安全框架,我是Spring 3.0用户,因此似乎似乎SpringSecurity是正确的选择,但是Spring安全性似乎受到过分复杂的困扰,它似乎并没有使安全性易于实现, Shiro似乎更加连贯,更容易理解。我正在寻找这两个框架之间的利弊清单。 问题答案: 我也同意Spring Security对我来说感觉太复杂了。当然,他们已经做了一些降低复杂性的事情,例