当前位置:首页 » 《关注互联网》 » 正文

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

18 人参与  2024年10月06日 11:20  分类 : 《关注互联网》  评论

点击全文阅读


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


点击全文阅读


本文链接:http://zhangshiyu.com/post/168256.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1