我有一个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>
答案 0 :(得分:0)
您很可能在showStatus
页面上拥有一些安全资源。当您的页面尝试访问此资源时,将显示密码对话框,因为它们也由faces servlet提供。
在加载showStatus
页面时,您可以使用firebug或某些嵌入式工具监控浏览器中的网络活动,从而检查所需的资源。你会看到这样的东西:
只需将此资源网址添加到不需要身份验证的<web-resource-collection>
即可。或者,您可以通过添加以下模式授予对所有资源的开放访问权限:
<url-pattern>/faces/javax.faces.resource/*</url-pattern>