【Spring】springSecurity中WebSecurityConfigurerAdapter类中configure方法(5版本以下)

1、简介

  • 在Spring Security中,WebSecurityConfigurerAdapter 类是一个配置适配器,它提供了多种 configure 方法的重载,允许开发者以声明性的方式配置Web安全。

2、相关规则

1. configure(WebSecurity web)

此方法用于配置哪些请求应该被Spring Security的过滤器链忽略。这通常用于静态资源(如CSS、JS、图片等),这些资源不需要进行安全认证。

@Override  
public void configure(WebSecurity web) throws Exception {  
    web.ignoring()  
        .antMatchers("/css/**", "/js/**", "/images/**", "/favicon.ico");  
}

2. configure(HttpSecurity http)

这是 WebSecurityConfigurerAdapter 中最重要的 configure 方法之一,它用于配置HTTP安全。通过这个方法,你可以定义哪些URL模式需要被保护,以及如何进行身份验证和授权。

@Override  
protected void configure(HttpSecurity http) throws Exception {  
    http  
        // 启用CSRF保护  
        .csrf().disable() // 注意:出于示例目的,这里禁用了CSRF保护,实际项目中应启用  
        // 配置请求授权  
        .authorizeRequests()  
            .antMatchers("/login", "/register", "/public/**").permitAll() // 这些URL允许匿名访问  
            .anyRequest().authenticated() // 其他所有请求都需要认证  
            .and()  
        // 配置表单登录  
        .formLogin()  
            .loginPage("/login") // 自定义登录页面  
            .defaultSuccessUrl("/home", true) // 登录成功后的默认跳转页面  
            .failureUrl("/login-error") // 登录失败后的页面  
            .permitAll() // 允许所有人访问登录页面  
            .and()  
        // 配置登出  
        .logout()  
            .logoutUrl("/logout") // 登出请求的URL  
            .logoutSuccessUrl("/login?logout") // 登出成功后的跳转页面  
            .permitAll() // 允许所有人访问登出功能  
            .and()  
        // 添加HTTP安全头部  
        .headers()  
            .frameOptions().deny() // 禁止iframe  
            .and()  
        // 会话管理  
        .sessionManagement()  
            .invalidSessionUrl("/invalid-session"); // 无效会话时的跳转页面  
}

3. configure(AuthenticationManagerBuilder auth)

此方法用于配置认证管理器(AuthenticationManager),它决定了如何对用户进行身份验证。可以通过它来定义用户信息的来源(如内存、数据库、LDAP等)和密码的加密方式。

@Autowired  
public void configureGlobal(AuthenticationManagerBuilder auth) throws Exception {  
    // 使用内存中的用户进行认证  
    auth  
        .inMemoryAuthentication()  
        .withUser("user").password("{noop}password").roles("USER")  
        .and()  
        .withUser("admin").password("{noop}admin").roles("USER", "ADMIN");  
  
    // 或者使用自定义的用户详情服务  
    // auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());  
}  
  
@Bean  
public PasswordEncoder passwordEncoder() {  
    return new BCryptPasswordEncoder();  
}

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
`WebSecurityConfigurerAdapter` 是 Spring Security 提供的一个方便的类,它可以帮助我们快速地配置安全策略,其 `configure(HttpSecurity http)` 方法用于配置 `HttpSecurity` 对象,该对象用于配置 Spring Security 的基本安全特性。 `configure(HttpSecurity http)` 方法主要是用来配置请求的访问规则、登录认证、异常处理、会话管理、注销等安全相关的配置。 在该方法,我们可以通过调用 `HttpSecurity` 对象的方法来进行一系列安全控制操作,例如: - `authorizeRequests()`:表示开始请求权限配置,可以指定 URL 匹配规则、角色等,对于匹配到的请求,可以指定需要的权限。 - `antMatchers()`:用于匹配 URL,支持 ANT 风格的通配符。 - `permitAll()`:表示允许所有用户访问该 URL。 - `hasRole()`:表示需要指定角色才能访问该 URL。 - `formLogin()`:表示使用表单登录进行认证,我们可以指定登录页面、登录成功后跳转的页面、登录失败后跳转的页面等。 - `logout()`:表示使用退出登录功能,我们可以指定退出登录的 URL、退出后跳转的页面等。 - `exceptionHandling()`:用于配置异常处理,例如没有权限访问时跳转的页面等。 - `sessionManagement()`:用于配置会话管理,例如设置会话超时时间等。 除了上述方法之外,还有很多其他方法可以用来配置安全策略。需要注意的是,`configure(HttpSecurity http)` 方法的配置是有顺序的,后面的配置会覆盖前面的配置。因此,在进行配置时需要注意顺序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值