質問
特定のページがログイン保護されている Web アプリケーションを作成しています。このために、glassfish で JDBC セキュリティ レルムを作成し、フォーム認証を使用しました (メソッドと同様) ここで説明されています)
ナビゲーション ルールを使用して、ユーザーを Web サイトの安全な領域にリダイレクトしています。
<navigation-case>
<from-outcome>showResults</from-outcome>
<to-view-id>/SecureUser/Reservation/New/AvailableResults.xhtml</to-view-id>
<redirect/>
</navigation-case>
(etc...)
これはうまくいきます。ただし、ナビゲーションの場合にリダイレクト タグをスキップすると、ページの URL は変更されません。その場合、認証されていないユーザーは保護されたページにアクセスできます。
これについて最善の方法は何でしょうか?ページが転送されるのではなくリダイレクトされるようにするだけで十分でしょうか?ユーザーがログインしているかどうかを確認するコードを、セキュリティで保護されたすべてのページに記述する必要がありますか?
解決
ページ間のナビゲーションに POST を使用することは悪い習慣であると考えられています。JSFを使用しないでください h:commandLink
または h:commandButton
簡単なページ間のナビゲーション用。どちらも、単純なナビゲーションにはまったく不要で SEO に優しくない POST フォームを生成します。むしろ使ってください h:link
または h:button
その代わり。これは、プレーンなバニラの GET リンクと GET フォームをそれぞれレンダリングします。
とにかく POST フォームを送信していて、結果ページがフォーム ページと異なる場合は、次を使用します。 PRG (ポストリダイレクト取得) パターン は良い習慣であると考えられています。使用できます <redirect/>
このために。