0

我写了一个 servlet 过滤器,它正在递归运行。

我想在会话中未设置特定属性时控制登录页面。

实际上登录页面与其他页面具有相同的 url 模式

<filter>
        <filter-name>AppFilter</filter-name>
        <filter-class>web.AppFilter</filter-class>
    </filter>

    <filter-mapping>
        <filter-name>AppFilter</filter-name>
        <url-pattern>/faces/*</url-pattern>
    </filter-mapping>
</filter>

请告诉我 doFilter 不应递归运行的解决方案。

4

1 回答 1

0

如果请求 URI 与登录页面本身匹配,只需检查过滤器,这样它就不会被重定向。

String loginURI = request.getContextPath() + "/faces/login.xhtml";

if (user != null || request.getRequestURI().equals(loginURI)) {
    chain.doFilter(request, response);
}
else {
    response.sendRedirect(loginURI);
}
于 2012-05-23T15:06:38.233 回答