如何从httprequest获取异常和消息

时间:2019-06-13 06:56:38

标签: java spring-boot

@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" 

但是当它到达端点时,它变为空

我应该为该endpoinr使用另一个参数,就像这里: https://stackoverflow.com/a/50429613/11369236

0 个答案:

没有答案