1、初次体验

Spring Security安全框架可以实现认证和授权功能。我们SpringBoot+SpringSecurity可以自动配置,因此我们首先创建一个SpringBoot项目,然后引入相关依赖即可。
SpringSecurity如果没有配置用户名和密码的话,会进行自动配置。当我们请求系统资源时,回先进行认证。默认用户名user,密码在项目启动后会打印在控制台上。

2、用户名和密码配置

基于配置文件配置:
image.png
在配置文件配置之后,登录就不会使用默认配置,而是根据配置文件。
基于配置类配置:
image.png

3、自定义认证过程

重要的接口

UserDetails、UserDetailsService
实现UserDetailsService接口,实现loadUserByUsername方法 ,系统如果发现没有上述两种配置,就会找UserDetailsService,然后执行loadUserByUsername 方法,我们在该方法中执行自定义逻辑,根据用户名查询认证,之后返回 UserDetails对象。

  1. @Service
  2. public class MyAuthServiceImpl implements UserDetailsService {
  3. @Autowired
  4. private PasswordEncoder passwordEncoder;
  5. @Override
  6. public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
  7. return new User("admin",passwordEncoder.encode("admin"),new ArrayList<>());
  8. }
  9. }

之后在config配置类中,配置接口和密码加密其

  1. @Configuration
  2. public class config extends WebSecurityConfigurerAdapter {
  3. @Autowired
  4. private UserDetailsService userDetailsService;
  5. @Override
  6. protected void configure(AuthenticationManagerBuilder auth) throws Exception {
  7. auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
  8. }
  9. @Bean
  10. public PasswordEncoder passwordEncoder(){
  11. return new BCryptPasswordEncoder();
  12. }
  13. }

4、配置登录页面和白名单