SpringSecurity 自定义表单登录的实现
本篇主要讲解在SpringSecurity中如何自定义表单登录,SpringSecurity默认提供了一个表单登录,但是实际项目里肯定无法使用的,本篇就主要讲解如何自定义表单登录
1.创建SpringSecurity项目
1.1使用IDEA
先通过IDEA创建一个SpringBoot项目并且依赖SpringSecurity,Web依赖
此时pom.xml会自动添加
org.springframework.boot spring-boot-starter-security
2.扩展WebSecurityConfigurerAdapter
WebSecurityConfigurerAdapter是SpringSecurity提供的用于我们扩展自己的配置
实现WebSecurityConfigurerAdapter经常需要重写的:
1、configure(AuthenticationManagerBuilderauth);
2、configure(WebSecurityweb);
3、configure(HttpSecurityhttp);
2.1默认WebSecurityConfigurerAdapter为我们提供了一些基础配置如下
protectedvoidconfigure(HttpSecurityhttp)throwsException{ logger.debug("Usingdefaultconfigure(HttpSecurity).Ifsubclassedthiswillpotentiallyoverridesubclassconfigure(HttpSecurity)."); http .authorizeRequests() .anyRequest().authenticated() .and() .formLogin().and() .httpBasic(); }
2.2创建自定义的WebSecurityConfigurer
1.formLogin()开启表单登录,该方法会应用FormLoginConfigurer到HttpSecurity上,后续会被转换为对应的Filter
2.loginPage()配置自定义的表单页面
3.authorizeRequests().anyRequest().authenticated();表示任何请求接口都要认证**
@Configuration @Slf4j publicclassMyWebSecurityConfigextendsWebSecurityConfigurerAdapter{ @Override protectedvoidconfigure(HttpSecurityhttp)throwsException{ http.csrf().disable() .formLogin() .loginPage("/mylogin.html") .and() .authorizeRequests().anyRequest().authenticated(); } }
2.3mylogin.html
Title 标准登录页面
表单登录
用户名: 密码: 登录