1

すべてのエントリ ポイントでユーザー名とパスワードの入力を求めるように Web アプリケーションを設定しています。showStatusアプリケーションのステータスを表示するように設計された1 つの URL を除いて、すべてに基本認証が必要です。URLはshowStatus認証を必要としません。問題は、showStatusURL にアクセスしてもパスワード ダイアログが引き続き表示されることです。showSessionキャンセルまたは [OK] をクリックしてもページにアクセスできますが、 URLのダイアログ ボックスを無効にする方法を知りたいです。

の内容は次のweb.xmlとおりです。

<!-- constraint for restricted pages -->
<security-constraint>
    <display-name>restricted access</display-name>
    <web-resource-collection>
        <web-resource-name>Secure Pages</web-resource-name>
        <description/>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <description/>
        <role-name>USERS</role-name>
    </auth-constraint>
</security-constraint>

<!-- do not require authentication for showStatus URL -->
<security-constraint>
    <web-resource-collection>
        <web-resource-name>ShowStatus</web-resource-name>
        <url-pattern>/showStatus.action</url-pattern>
        <http-method>GET</http-method>
    </web-resource-collection>
</security-constraint>

<!-- need the login prompt to appear for everything but showStatus -->
<login-config>
    <auth-method>BASIC</auth-method>
    <realm-name>MYREALM</realm-name>
</login-config>

<security-role>
    <role-name>USERS</role-name>
</security-role>
4

1 に答える 1

0

ほとんどの場合、ページに保護されたリソースがいくつかありshowStatusます。これらのリソースは Faces サーブレットによっても提供されるため、ページがこのリソースにアクセスしようとすると、パスワード ダイアログが表示されます。

ページのロード時に firebug またはいくつかの組み込みツールを使用してブラウザーでネットワーク アクティビティを監視することにより、必要なリソースを確認できshowStatusます。次のように表示されます。

ここに画像の説明を入力

<web-resource-collection>必要なのは、認証を必要としないこのリソース URL を に追加することだけです。または、次のパターンを追加して、すべてのリソースへのオープン アクセスを許可することもできます。

<url-pattern>/faces/javax.faces.resource/*</url-pattern>
于 2015-05-17T10:21:46.507 に答える