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