私はjsfアプリケーション(j_security)でコンテナベースのセキュリティを使用しており、glassfishを使用して保護されたページのユーザーを認証しています。ただし、アプリケーション内には、ユーザーがログインしている場合でもパスワードを再入力する必要がある、より制限されたページがあります。セッションが既にライブであるため、複数の制約を作成しても役に立ちません。
これはどのように達成できますか?
私はjsfアプリケーション(j_security)でコンテナベースのセキュリティを使用しており、glassfishを使用して保護されたページのユーザーを認証しています。ただし、アプリケーション内には、ユーザーがログインしている場合でもパスワードを再入力する必要がある、より制限されたページがあります。セッションが既にライブであるため、複数の制約を作成しても役に立ちません。
これはどのように達成できますか?
セッションフラグを参照して、ユーザーがすでに2回認証されているかどうかを確認できる「SecondAuth」というサーブレットフィルターを使用できます。そうでない場合は、2 番目の認証ページにリダイレクトできます。要求された URL をセッション変数に保存することを忘れないでください。ユーザーが再度認証に成功すると、要求されたページにリダイレクトできます。
以下のように、web.xml 構成を使用して複数のページを保護できます。
web.xml
<filter>
<filter-name>secondauth</filter-name>
<filter-class>com.auth.SecondAuth</filter-class>
</filter>
<filter-mapping>
<filter-name>secondauth</filter-name>
<url-pattern>/app/secure1.jsp</url-pattern>
<url-pattern>/app/secure2.jsp</url-pattern>
</filter-mapping>
サーブレット フィルターの使用方法については、Java でサーブレット フィルターを使用して着信サーブレット リクエスト URL を変更する方法を参照してください。