@Slf4j @Configuration public class SecurityConfig extends WebSecurityConfigurerAdapter { //配置认证管理器 @Bean//添加此注解是为了能够在Controller中自动装配 @Override protected AuthenticationManager authenticationManager() throws Exception { return super.authenticationManager(); } //配置密码的加密方式 @Bean public PasswordEncoder passwordEncoder(){ // 下面代码是获取了一个无加密的实例 return NoOpPasswordEncoder.getInstance(); } @Override protected void configure(HttpSecurity http) throws Exception { // super.configure(http); //配置自己的登陆页面, 当判断没有登录的时候 自动跳转到自己的登陆页面 http.formLogin().loginPage("/login.html"); //配置白名单(无需登录也能访问) String[] urls = {"/reg.html","/login.html","/reg","login"}; http.authorizeRequests() .mvcMatchers(urls)//匹配某些路径 .permitAll()//直接放行(不需要登录可以访问) .anyRequest()//其他请求 .authenticated();//需要登陆认证才能访问 // 关闭默认开启的跨域攻击防御 http.csrf().disable(); } }
时间: 2024-04-22 13:25:32 浏览: 107
SpringBoot日志插件log4J和slf4J的使用和比较含完整示例
这段代码是一个Spring Security的配置类,用于配置认证和授权规则。下面是对代码的一些解释:
1. `@Slf4j`:这是一个Lombok注解,用于自动生成日志对象。
2. `@Configuration`:这是一个Spring注解,表示这是一个配置类。
3. `SecurityConfig`:这个类继承了`WebSecurityConfigurerAdapter`类,用于自定义Spring Security的配置。
4. `authenticationManager()`方法:这个方法被`@Bean`注解标记,表示将返回的`AuthenticationManager`对象注册为一个Bean,以供其他组件自动装配使用。
5. `passwordEncoder()`方法:这个方法也被`@Bean`注解标记,表示将返回的`PasswordEncoder`对象注册为一个Bean,用于配置密码的加密方式。在这里使用的是`NoOpPasswordEncoder.getInstance()`,即不对密码进行加密处理。
6. `configure(HttpSecurity http)`方法:这个方法用于配置Spring Security的认证和授权规则。在这里,配置了自定义的登录页面、白名单和关闭跨域攻击防御。
需要注意的是,这段代码中的密码加密方式使用了一个不安全的实例`NoOpPasswordEncoder.getInstance()`,仅用于演示目的。在实际项目中,应该使用安全的密码加密算法来保护用户密码。
阅读全文