UserDetailsService

02 - Spring Security自定义用户逻辑

用户信息封装在UserDetailsService的实现类中,返回以后Spring Security会拿到用户信息去做一些处理和校验,校验成功把用户放在session中;如果失败,就会UsernameNotFoundException.

User

02 - Spring Security自定义用户逻辑

username:账户
password:密码
authorities:用户角色
accountNonExpired:账户是否过期
accountNonLocked:账户是否锁定
credentialsNonExpired:密码是否过期
enabled:账户启动还是禁用

PasswordEncoder

02 - Spring Security自定义用户逻辑

用户注册往数据库中插入数据时,使用encode()方法进行加密
matches方法是由Spring Security来调用的 登陆过程中拿到UserDetails后会拿到password,将UserDetails中的密码和登录时的密码进行比对,如果比对false就会抛出异常

测试:当实现了加密配置,DB(User)也需要加密才能进行匹配

BrowserSecurityConfig
02 - Spring Security自定义用户逻辑
UserDetailsService的实现
02 - Spring Security自定义用户逻辑
password :123456
02 - Spring Security自定义用户逻辑
登陆逻辑成功
02 - Spring Security自定义用户逻辑
Spring Security的passwordEncoder每次加密后的密码是不一样的,它会随机生成一个盐,在密码生成时将随机生成的盐混合在数据库密码这个字串中,每次判断的时候根据随机生成的盐反推回来得到当时加密的串,最终来判断是否匹配
(随机)盐 -> 保证串

相关文章: