代码之家  ›  专栏  ›  技术社区  ›  Novice User

Spring MVC拦截器中的无尽循环

  •  0
  • Novice User  · 技术社区  · 11 年前

    我已经编写了一个自定义拦截器 防护网拦截器 延伸 处理器接口适配器

    在里面 预处理 我正在检查一些条件,基于此,我使用

    response.sendRedirect("/myapp/user/noaccess");
    

    现在,每当我击球 /myapp/user/noaccess ,它正在进入无休止的循环,因为我无法从这个拦截器中出来。这是一次又一次的召唤。

    我的应用程序上下文具有:

        <mvc:interceptor>
            <mvc:mapping path="/myapp/user/**"/>
            <bean class="com.mypackage.interceptors.PreventScreenInterceptor" />
        </mvc:interceptor>
    
    2 回复  |  直到 11 年前
        1
  •  1
  •   ced-b    11 年前

    你必须使用 request.getRequestURI() 在发送重定向之前,检查所调用的URI是否不是“/myapp/user/noaccess”。

        2
  •  1
  •   Julio Indriago Ritesh Kumar    9 年前

    您必须检查,如果请求不是来自您从拦截器重定向的操作,否则它会一次又一次地调用自己。

    参考使用此代码-

    @Override
        public boolean preHandle(HttpServletRequest request,
    
        HttpServletResponse response, Object handler) throws Exception {
    
            String uri = request.getRequestURI();
            logger.debug("inside interceptor  and uri = "+uri);
    
            if (!uri.endsWith("/noaccess") ) {
                logger.info("request is coming from other than /myapp/user/noaccess");
                response.sendRedirect("/myapp/user/noaccess");
            }
    
            return true;
        }