1.pom.xml加入依赖:
<!--security-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
2.WebSecurityConfig:
@Configuration
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
/**
* 加密解密官方实现
* @return
*/
@Bean
public PasswordEncoder passwordEncoder(){
return new BCryptPasswordEncoder();
}
}
3.User implements UserDetails:
// 只显示implements UserDetails后Override方法
// 暂时只有status字段,所以所有账户有效通用一个判断
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
return null;
}
@Override
public String getUsername() {
return this.userName;
}
/**
* 账户是否过期
*
* @return
*/
@Override
public boolean isAccountNonExpired() {
// return false;
return getUserStatusFlag();
}
/**
* 账户是否冻结
*
* @return
*/
@Override
public boolean isAccountNonLocked() {
// return false;
return getUserStatusFlag();
}
/**
* 账户是否锁定
*
* @return
*/
@Override
public boolean isCredentialsNonExpired() {
// return false;
return getUserStatusFlag();
}
/**
* 账户是否删除
*
* @return
*/
@Override
public boolean isEnabled() {
// return false;
return getUserStatusFlag();
}
/**
* 用户是否可用
*
* @return
*/
private boolean getUserStatusFlag() {
if (null != this.userStatus && 1 == this.userStatus) {
return true;
} else {
return false;
}
}
4.UserServiceImpl implements UserDetailsService:
// 只显示implements UserDetailsService后Override方法
// return 测试数据 注意加密
@Autowired
private PasswordEncoder passwordEncoder;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
SystemUserPojo systemUserPojo=new SystemUserPojo();
systemUserPojo.setUserName(username);
systemUserPojo.setPassword(passwordEncoder.encode("123456"));
systemUserPojo.setUserStatus(1);
return systemUserPojo;
}
5.启动访问接口,输入用户名密码
问题排查:
暂无