如何重定向到 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
我正在为 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