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

Posted 文nKkCJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了三登录验证:使用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();
    }
}

以上是关于三登录验证:使用security自带login界面登录的主要内容,如果未能解决你的问题,请参考以下文章

四登录验证:使用自定义界面登录

SpringBoot集成Spring Security——自定义表单登录

servlet登录界面进行用户名和密码验证

使用Django自带的登录访问限制login_required

Spring Security教程(10)---- 自定义登录成功后的处理程序及修改默认验证地址

Spring boot Security 登陆安全配置