Spring 自定义白标签错误 - 重定向

Spring Customize whitelabel error - redirect

我正在尝试通过在使用 RestController 注释的 class 中实现错误控制器来自定义 /error。

Spring 启动应用程序包含自动配置库,但未明确设置或使用 MVC。

@RequestMapping("/error")
public String handler(){
return "Error Occurred";
}

当错误状态为 401 和 404 时,以上代码工作正常。

@RequestMapping("/error")
public void handler(HttpServletResponse response)
{
response.sendRedirect("http://<url>/home");
return;// edit: Even adding this statement is just setting location but not redirecting.
}

这是设置位置以响应重定向 url 但不是重定向。

要求是将 /error 映射到外部 UI 页面。

现在,当我使用 redirectview 或 responsentity 时,处理程序中的逻辑仅在手动调用 /error 且 404 未调用 /error 时才有效。它只是说找不到此页面。有人能告诉我这是因为自动配置库还是我遗漏了什么?

  1. 正在将此条目添加到 application.properties 文件server.error.whitelabel.enabled=false。 这将完全禁用白标签错误页面。

  2. 自定义错误控制器 :

     @RequestMapping("/error")
     public String handleError(HttpServletRequest request) {
     Object status = request.getAttribute(RequestDispatcher.ERROR_STATUS_CODE);
    
     if (status != null) {
         Integer statusCode = Integer.valueOf(status.toString());
    
         if(statusCode == HttpStatus.NOT_FOUND.value()) {
             return "error-404";
         }
         else if(statusCode == HttpStatus.UNAUTHORIZED).value()) {
             return "error-401";
         }
     }
     return "error";
    

    }

您可以为相应的错误添加 html 页。

示例:对于 404 错误,用户将看到错误-404.html 页面。

如果您想重定向到外部,请尝试以下操作 UI:

String redirectUrl = `https://www.yahoo.com";
return "redirect:" + redirectUrl;

问题已解决。此应用程序有一些使用 Spring 安全性的自定义库。没有访问令牌,就会发生此错误。我需要探索更多的 401 错误,但现在,要处理错误,我使用 class 和 @RestControllerAdvice 并将 属性 spring.mvc.throw-exception-if-no-handler-found 设置为 true 和另外,禁用白标签。

授权成功后重定向逻辑生效。