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();}

}