如何重定向到 URL,除非在 Spring Boot Web MVCApp 中使用 HandlerInterceptor 不满足某些条件

How to redirect to URL unless some conditions is not met using HandlerInterceptor in a Spring Boot Web MVCApp

我正在为 WebMVC 应用程序使用 Spring 启动。 我在我的应用程序中提供了很多 url,例如

问题是 每当提出任何请求并且公司尚未注册时,我如何重定向到“/公司”。 我试过像这样使用 HandlerInterceptor

public class CompanySetupInterceptor implements HandlerInterceptor {
Logger logger = Logger.getLogger(CompanySetupInterceptor.class);

CurrentUser currentUser;
@Autowired
CompanyService companyService;

@Override
public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o) throws Exception {
    /*check company is registered or not
    * if not redirect to /company
    * */
    if(companyService.getCompany() == null){
        httpServletResponse.sendRedirect("/company");
        return false;
    }
    else{
        return true;
    }
}

但是每次我实现它,它都会进入从重定向到拦截等等的无限循环。 Localhost 重定向您的次数过多。 Localhost page is not working

如何解决上述问题?

您创建的拦截器会为每个传入请求调用,当您从拦截器重定向到 /company 时,它又是对 spring mvc 的传入请求,并再次转发给拦截器,这就是它进入的原因无限循环。

您需要配置您的拦截器以绕过它对特定 URL 的执行,例如您的 /company。

参考下面link配置拦截器 http://docs.spring.io/spring/docs/3.2.x/spring-framework-reference/html/mvc.html#mvc-config-interceptors