Для решения этой проблемы я предоставил собственную реализацию Principal
:
data class UserInfo(val email: String, val token: String) : Principal {
override fun getName(): String = email
}
, а затем передал экземпляр UserInfo
конструктору UsernamePasswordAuthenticationToken
:
UsernamePasswordAuthenticationToken(UserInfo(email, token), password, listOf(SimpleGrantedAuthority("USER")))
И если вам нужен этот токен, вы сможете извлечь его из SecurityContext
с помощью простой строки кода:
(SecurityContextHolder.getContext().authentication.principal as UserInfo).token