Я использую настройки безопасности в Springboot, с Java8 и mongodb . После настройки я получил страницу входа. Для каждого пользователя в базе данных я получаю сообщение об ошибке "Пользователь заблокирован" . Здесь я делюсь изображением полученного результата.
Примечание: я не настроил роли и авторизацию для какого-либо пользователя.
Примечание: я получаю "Bad Credentials" для пользователя, которого нет в базе данных, который показывает, что он связан с базой данных.
Я делюсь своим фрагментом кода здесь.
Pom. xml:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-security</artifactId>
</dependency>
Bean:
@Document(collection = "UserDetails")
public class User {
@Id
private String id;
private String username;
private String password;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public User(String username, String password) {
super();
this.username = username;
this.password = password;
}
public User() {
super();
}
Репозиторий:
@Repository
public interface UserDetailsRepository extends MongoRepository<User, String> {
User findByUsername(String username);
}
Сервис:
@Service
public class SecUserDetailsService implements UserDetailsService {
@Autowired
private UserDetailsRepository userDetailsRepo;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userDetailsRepo.findByUsername(username);
if(user == null){
throw new UsernameNotFoundException(username);
}else{
UserDetails details = new MyUserPrincipal(user);
return details;
}
}
}
MyUserPrincipal:
public class MyUserPrincipal implements UserDetails{
private User user;
public MyUserPrincipal(User user) {
this.user = user;
}
@Override
public Collection<? extends GrantedAuthority> getAuthorities() {
// TODO Auto-generated method stub
return null;
}
@Override
public String getPassword() {
// TODO Auto-generated method stub
return this.user.getPassword();
}
@Override
public String getUsername() {
// TODO Auto-generated method stub
return this.user.getUsername();
}
@Override
public boolean isAccountNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isAccountNonLocked() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isCredentialsNonExpired() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEnabled() {
// TODO Auto-generated method stub
return false;
}
}
SecuriyConfigurations:
@EnableWebSecurity
public class securityConfigurations extends WebSecurityConfigurerAdapter {
@Autowired
private SecUserDetailsService userDetailsService;
@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception{
auth.userDetailsService(userDetailsService);
}
}