Каким будет способ настройки org.springframework.security.core.userdetails.User
, который обрабатывает аутентификацию на основе enabled
, accountNotExpired
, credentialsNotExpired
и accountNotLocked
? Пользователь моего приложения (БД) имеет следующий возможный статус:
PENDING
, ACTIVE
, DEACTIVATED
, BLOCKED
, SPAM
, DELETED
Я написал кастом UserDetailsService
@Service
public class MyUserDetailsService implements UserDetailsService {
@Autowired
private UserDao userDao;
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
User user = userDao.findByEmail(username)
.orElseThrow(() -> new UsernameNotFoundException("No account found for " + username));
return new org.springframework.security.core.userdetails.User(user.getEmail(),
user.getPassword(),true , true, true, true, getAuthorities("ROLE_USER"));
}
private Collection<? extends GrantedAuthority> getAuthorities(String role) {
return Arrays.asList(new SimpleGrantedAuthority(role));
}
}
На данный момент я вынужден жестко кодировать true
для всех свойств, которые * Spring по умолчанию имеет User
. Я хочу свою реализацию этих свойств.
Редактировать: Работа моего пользовательского статуса Accont:
Для spam
, delete
я хочу, чтобы пользователь решил (в точке входа в систему), хотят ли они восстановить свою учетную запись. Для spam
и blocked
пользователь сможет получить доступ к домашней странице, но ничего, кроме сообщения, не будет видно. Для deactivated
я хочу показать пользователям, что им нужно активировать учетную запись, нажав на ссылку, указанную в полученном им электронном письме.
Как этого добиться? И на каком уровне?