Получение id авторизованного пользователя Spring Security
Я пытаюсь получить сведения об авторизованном пользователе, но при просмотре в режиме отладки я получаю: principal: "anonymousUser". Как я могу добраться до id авторизованного пользователя?
Authentication auth = SecurityContextHolder.getContext().getAuthentication();
Object pricipal = auth.getPrincipal();
Integer user;
if (pricipal instanceof UserEntity) {
user = ((UserEntity) pricipal).getId();
}
UserEntity
@Entity
@Table(name = "user_table")
@Data
public class UserEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id;
private String activationCode;
@Column
private String login;
@Column
@NotBlank(message = "Password cannot be empty")
@Size(min = 10)
private String password;
public String getActivationCode() {
return activationCode;
}
public String getRoles() {
return roleEntity.getName();
}
public void setActivationCode(String activationCode) {
this.activationCode = activationCode;
}
@ManyToOne
@JoinColumn(name = "role_id")
private RoleEntity roleEntity;
}
Ответы (1 шт):
Автор решения: Gringo
→ Ссылка
здравствуйте Principal principal это очень сжатая информация о юзере . попробуйте вот так
@GetMapping("/")
public String daoTestPage(Principal principal) {
User user = userService.findByUsername(principal.getName()).orElseThrow(() -> new RuntimeException("unable to fing user by username: " + principal.getName()));
return "authenticated: " + user.getUsername() + " : " + user.getEmail() + " : " + user.getId();
}