三登录验证:使用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——自定义表单登录
使用Django自带的登录访问限制login_required