Итак, я сейчас пользуюсь Spring Boot и Security.До сих пор у меня был только один «вид» пользователя, которому просто давали роли USER_ROLE
или ADMIN_ROLE
для защиты моих конечных точек REST.
Однако я сейчас нахожусь в точке, где я понимаю: яиметь только один логин.Это конечная точка /oauth/token
по умолчанию, которая, в конце концов, загружает пользователя из моей базы данных и соответственно добавляет права доступа:
@Override
public UserDetails loadUserByUsername(String username) throws UsernameNotFoundException {
username = username.trim();
AppUserEntity appUserEntity = this.appUserRepository.findByEmail(username)
.orElseThrow(() -> new UsernameNotFoundException("User not found."));
List<GrantedAuthority> authorities = new ArrayList<>();
Collection<AppUserRoleEntity> roles = appUserEntity.getRoles();
for (AppUserRoleEntity appUserRoleEntity : roles) {
RoleEntity roleEntity = appUserRoleEntity.getRole();
authorities.add(new SimpleGrantedAuthority(roleEntity.getRoleType().toString()));
}
return new AppUserDetails(
appUserEntity.getId(),
appUserEntity.getEmail(),
appUserEntity.getPassword(),
authorities,
appUserEntity.getActivated()
);
}
Проблема в том, что между пользователями нет различий.Я не знаю здесь, какой логин (на моем сайте) использовал пользователь.Вход в систему всегда будет работать, даже если обычный пользователь использует маску admin-login.
То, что я ищу, - это способ иметь разные конечные точки регистрации и входа для администратора и обычных пользователей.Как бы я это сделал?
Я видел этот учебник , а также этот , но они не используют OAuth2.
Какие у меня варианты?здесь и / или как это сделать Spring Boot?