@Override
public Authentication authenticate(Authentication authentication) throws AuthenticationException {
if (currentUser.getStatus().equals(UserStatus.BLOCKED.toString())) {
throw new LockedException(
"UserEntity.validation.status.isBlocked" );
}
затем он выходит из строя:
@Override
public void onAuthenticationFailure(HttpServletRequest request, HttpServletResponse response, AuthenticationException e) throws IOException, ServletException {//TODO implement session limitations
if (e instanceof LockedException) {
response.sendRedirect("/user-error");
}
}
Я отправляю сюда ошибку здесь:
@RequestMapping("/user-error")
public String handleUserError(HttpServletRequest request) {
но я не могу получить lockedexception
из этого запроса.
Я хочу отправить несколько параметров, таких как:
Map<String, Object> data = new HashMap<>();
// data.put(
// "timestamp",
// Calendar.getInstance().getTime());
Должен ли я использовать что-то подобное?
request.setAttribute();
или
// data.put(
// "exception",
// e.getMessage());
//
// response.getOutputStream()
// .println(objectMapper.writeValueAsString(data));
//
Что мне делать?
Я могу установить с этим:
request.setAttribute();
но, возможно, в этом нет необходимости. Потому что исключение уже есть.
Например, когда он здесь
if (e instanceof LockedException) {
request.setAttribute("message", e.getMessage());
в режиме отладки, я могу получить это:
request.getAttribute("message") = "UserEntity.validation.status.isBlocked"
но когда он идет в конечную точку, он становится нулевым
Должен ли я использовать другой параметр для этой конечной точки, как здесь:
https://stackoverflow.com/a/50429613/11369236