Я пытаюсь заставить Spring Security возвращать ответ 401
с настроенным сообщением, когда учетная запись пользователя отключена.
Я получаю DisabledException
, как я хочу от попытки аутентификации, но я не могу передать это DisabledException
на AuthenticationEntryPoint
, который отправляет мои ошибки HTTP REST.
А также, почему AuthenticationException
в AuthErrorHandler
не совпадает с JwtAuthenticationFilter
?
class JwtAuthenticationFilter(authManager: AuthenticationManager) : UsernamePasswordAuthenticationFilter() {
[...]
override fun unsuccessfulAuthentication(request: HttpServletRequest, response: HttpServletResponse, failed: AuthenticationException) {
if (failed is DisabledException) {
// The HTTP status goes through successfully, but not the message
response.sendError(480, "I'm not received on the other end.")
} else {
super.unsuccessfulAuthentication(request, response, failed)
}
}
}
class AuthErrorHandler : AuthenticationEntryPoint {
@Throws(IOException::class, ServletException::class)
override fun commence(request: HttpServletRequest, response: HttpServletResponse, authException: AuthenticationException) {
if (response.status != 480) {
response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException.message)
}
// Else we've already sent the proper error
}
}
Есть ли способ отправить полезное сообщение или более правильный способ сделать это?