1、据用户名获取用户是否存在同时设置用户的 权限实现了:UserDetailsService 接口
/**
- @author :wenye
- @date :Created in 2021/4/7 11:49
- @description:校验身份
- @version: 1.0.0$
*/
@Component
public class MyuserDetailsService implements UserDetailsService {
private Logger logger = LoggerFactory.getLogger(MyuserDetailsService.class);@Overridepublic UserDetails loadUserByUsername(String username) throws UsernameNotFoundException { //据用户名查找用户信息,用户名和明码 //AuthorityUtils.commaSeparatedStringToAuthorityList("admin") 把字符串转化为对应的对象,以逗号分隔字符串 logger.info("用户名为:{}",username); return new User(username,"123456", AuthorityUtils.commaSeparatedStringToAuthorityList("admin"));}
}
2、校验用户名和明码是否匹配 ,实现了PasswordEncoder 接口
/**
- 用于编码明码的服务接口的实现类。
*/
@Component
public class MyPasswordEncoder implements PasswordEncoder {
private Logger logg = LoggerFactory.getLogger(MyPasswordEncoder.class);/** * 编码原始明码。通常,良好的编码算法利用SHA-1或更大的哈希与8字节或更大的随机生成的盐相结合。 * @param rawPassword 明码,一个可读的字符值序列 * @return */@Overridepublic String encode(CharSequence rawPassword) { logg.info("原始明码:{}", rawPassword); return rawPassword.toString();}/** * 验证从存储中取得的编码明码是否与提交的原始明码匹配。如果明码匹配,返回true;如果不匹配,返回false。存储的明码自身永远不会被解码。 * @param rawPassword 预设的验证明码。要编码和匹配的原始明码 * @param encodedPassword 表单输出的明码。来自存储的编码明码与之比拟 * @return */@Overridepublic boolean matches(CharSequence rawPassword, String encodedPassword) { logg.info("预设的验证明码:{}", rawPassword); logg.info("表单输出的明码:{}", encodedPassword); return encodedPassword.equals(rawPassword.toString());}
}
3、security配置文件
/**
- SpringSecurity的配置
- Created by macro on 2018/4/26.
*/
@Configuration
@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled=true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
//申请权限配置@Overrideprotected void configure(HttpSecurity http) throws Exception { //任何登录的申请都须要进行认证能力拜访 http.formLogin() .and() //身份认证就是角色权限认证,在usersevice中咱们定义了角色对象 .authorizeRequests() .anyRequest() .authenticated();}
}