1、初次体验
Spring Security安全框架可以实现认证和授权功能。我们SpringBoot+SpringSecurity可以自动配置,因此我们首先创建一个SpringBoot项目,然后引入相关依赖即可。
SpringSecurity如果没有配置用户名和密码的话,会进行自动配置。当我们请求系统资源时,回先进行认证。默认用户名user,密码在项目启动后会打印在控制台上。
2、用户名和密码配置
基于配置文件配置:
在配置文件配置之后,登录就不会使用默认配置,而是根据配置文件。
基于配置类配置:
3、自定义认证过程
重要的接口
UserDetails、UserDetailsService
实现UserDetailsService接口,实现loadUserByUsername方法 ,系统如果发现没有上述两种配置,就会找UserDetailsService,然后执行loadUserByUsername 方法,我们在该方法中执行自定义逻辑,根据用户名查询认证,之后返回 UserDetails对象。
@Service
public class MyAuthServiceImpl implements UserDetailsService {
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String s) throws UsernameNotFoundException {
return new User("admin",passwordEncoder.encode("admin"),new ArrayList<>());
}
}
之后在config配置类中,配置接口和密码加密其
@Configuration
public class config extends WebSecurityConfigurerAdapter {
@Autowired
private UserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
auth.userDetailsService(userDetailsService).passwordEncoder(passwordEncoder());
}
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}