乐趣区

关于spring:三登录验证使用security自带login界面登录

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);
@Override
public 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
 */
@Override
public String encode(CharSequence rawPassword) {logg.info("原始明码:{}", rawPassword);
    return rawPassword.toString();}

/**
 * 验证从存储中取得的编码明码是否与提交的原始明码匹配。如果明码匹配,返回 true; 如果不匹配,返回 false。存储的明码自身永远不会被解码。* @param rawPassword 预设的验证明码。要编码和匹配的原始明码
 * @param encodedPassword 表单输出的明码。来自存储的编码明码与之比拟
 * @return
 */
@Override
public 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 {

// 申请权限配置
@Override
protected void configure(HttpSecurity http) throws Exception {
    // 任何登录的申请都须要进行认证能力拜访
    http.formLogin()
            .and()
            // 身份认证就是角色权限认证,在 usersevice 中咱们定义了角色对象
            .authorizeRequests()
            .anyRequest()
            .authenticated();}

}

退出移动版