【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();  
}

相关推荐

  1. Spring拦截WebSecurityConfigurerAdapter和Aop拦截区分

    2024-07-11 21:06:02       59 阅读
  2. UE5C++对蓝图的软引用方法

    2024-07-11 21:06:02       46 阅读
  3. React Router v5 版本,路由传参主要方式

    2024-07-11 21:06:02       25 阅读
  4. Python的成员方法

    2024-07-11 21:06:02       47 阅读
  5. Python(class)的使用方法

    2024-07-11 21:06:02       33 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-11 21:06:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-11 21:06:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-11 21:06:02       58 阅读
  4. Python语言-面向对象

    2024-07-11 21:06:02       69 阅读

热门阅读

  1. 【C#】遍历文件夹及其子文件夹指定后缀文件

    2024-07-11 21:06:02       19 阅读
  2. C语言从头学33——内存管理(一)

    2024-07-11 21:06:02       23 阅读
  3. Qt 的Q_PROPERTY关键字

    2024-07-11 21:06:02       20 阅读
  4. C++ 入门08:运算符重载

    2024-07-11 21:06:02       24 阅读
  5. [AI 大模型] 百度 文心一言

    2024-07-11 21:06:02       21 阅读
  6. 架构面试-场景题-单点登录(SSO)怎么实现的

    2024-07-11 21:06:02       24 阅读
  7. 深入理解Spring Boot中的事件驱动架构

    2024-07-11 21:06:02       21 阅读
  8. DDD架构面试问题

    2024-07-11 21:06:02       21 阅读
  9. 解析 pdfminer pdfparser.py

    2024-07-11 21:06:02       23 阅读
  10. 解决vue3子组件onMounted中获取不到props的值

    2024-07-11 21:06:02       17 阅读
  11. 关系代数中的八种基本运算

    2024-07-11 21:06:02       22 阅读