登录认证
1,创建一个类实现UserDetailsService
接口,重写其中的方法。更加用户名从数据库中查询用户信息
2,因为UserDetailsService
方法的返回值是UserDetails
类型,所以需要定义一个类,实现该接口,把用户信息封装在其中。
3,密码加密存储
默认使用的PasswordEncoder
要求数据库中的密码格式为:{id}password 。它会根据id去判断密码的加密方式。但是我们一般不会采用这种方式。所以就需要替换PasswordEncoder
。
我们一般使用SpringSecurity
为我们提供的BCryptPasswordEncoder
。
我们可以定义一个SpringSecurity
的配置类,SpringSecurity
要求这个配置类要继承WebSecurityConfigurerAdapter
。
4,登录接口
1,SecurityConfig
重写configure(HttpSecurity http)
方法,对登录接口放行允许匿名访问
2,登录业务层
-
在接口中我们通过
AuthenticationManager
的authenticate方法来进行用户认证,所以需要在SecurityConfig
中配置把AuthenticationManager
注入容器。