Glassfish 3.1登录领域不应提示输入特定URL的凭据

时间:2012-03-16 12:57:19

标签: authentication login glassfish jdbcrealm

我有一个Web应用程序,用于在每个入口点提示输入用户名和密码。除了一个名为showStatus的URL(用于显示应用程序的状态)之外,所有内容都需要基本身份验证。 showStatus网址不需要身份验证。问题是,即使访问showStatus URL,仍会显示密码对话框。我可以单击取消,或者单击确定仍然可以访问该页面,但我想知道如何禁用showSession 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>

1 个答案:

答案 0 :(得分:0)

您很可能在showStatus页面上拥有一些安全资源。当您的页面尝试访问此资源时,将显示密码对话框,因为它们也由faces servlet提供。

在加载showStatus页面时,您可以使用firebug或某些嵌入式工具监控浏览器中的网络活动,从而检查所需的资源。你会看到这样的东西:

enter image description here

只需将此资源网址添加到不需要身份验证的<web-resource-collection>即可。或者,您可以通过添加以下模式授予对所有资源的开放访问权限:

<url-pattern>/faces/javax.faces.resource/*</url-pattern>