Filter
ユーザーがいくつかのページにアクセスしたい場合に、ユーザーにログインを強制するために a を使用しようとしています。
したがって、Filter
セッションがない場合は、それらをエラーページにリダイレクトする必要があります。
しかし、彼らが にアクセスしたときにこれが発生することを望んでいませんindex.html
。なぜなら、彼らはインデックス ページにログインできるからです。
/
したがって、とを除くすべてのページに一致する URL パターンが必要index.xhtml
です。
どうやってやるの?で正規表現を使用できますweb.xml
か?
編集:
これを読んだ後
私は次のようなものを作ることができると思いました:
if (!req.getRequestURI().matches("((!?index)(.*)\\.xhtml)|((.*)\\.(png|gif|jpg|css|js(\\.xhtml)?))"))
私のdoFilter()
方法では、それでもすべてを処理します。
私はそれをオンラインでテストし、フィルタリングする必要のないファイルに一致するため、正規表現が機能すると確信していますが、除外されたファイルに対しても if の内容が実行されます!
編集2:
新しい方法を試しています。
フィルターを*.xhtml
myweb.xml
にマップしたので、上記の正規表現で css、画像、javascript を除外する必要はありません。
これが新しいコードです( にdoFilter()
)
if (req.getRequestURI().contains("index")) {
chain.doFilter(request, response);
} else {
if (!userManager.isLogged()) {
request.getRequestDispatcher("error.xhtml").forward(request, response);
} else {
chain.doFilter(request, response);
}
}
chain.doFilter()
ただし、すべてのページで (外側の if) を呼び出すため、まだそうではありません。
インデックス ページをフィルター処理から除外するにはどうすればよいですか?