0

サーブレットフィルターを作成しましたが、再帰的に実行されています。

セッション中に特定の属性が設定されていないときに、ログインページを制御したい。

実際、ログインページは他のページと同じ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 に答える