Java Tomcat 8摘要身份验证不断要求输入密码

Java Tomcat 8摘要身份验证不断要求输入密码,java,xml,tomcat,Java,Xml,Tomcat,我有一个用java编写的web应用程序,我想保护WebContent文件夹中的admin文件夹中的所有内容。问题是服务器不断要求输入用户名和密码。我的web.xml是: <security-constraint> <web-resource-collection> <web-resource-name>Admin Constraint</web-resource-name> <url-pattern>/admin/index.jsp&l

我有一个用java编写的web应用程序,我想保护WebContent文件夹中的admin文件夹中的所有内容。问题是服务器不断要求输入用户名和密码。我的web.xml是:

<security-constraint>
<web-resource-collection>
<web-resource-name>Admin Constraint</web-resource-name>
<url-pattern>/admin/index.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
    <role-name>administration</role-name>
</auth-constraint>
</security-constraint>
<login-config>
    <auth-method>DIGEST</auth-method>
    <realm-name>AdministrationArea</realm-name>
</login-config>

管理约束
/admin/index.jsp
管理
消化
行政区
我的用户xml文件是

<role rolename="admin-gui"/>
<role rolename="manager-gui"/>
<role rolename="administration"/>
<user username="admin" password="admin" roles="administration,tomcat"/>
<user username="tomcat" password="tomcat" roles="admin-gui,manager-gui"/>

我的服务器xml文件是:

<Context path="/admin" docBase="admin"><Realm  className="org.apache.catalina.realm.MemoryRealm"resourceName="AdministrationArea"digest="MD5"/></Context>


我是新来的。请帮助。

问题不在于Tomcat配置,而在于HTTP身份验证的工作方式。服务器会要求您的浏览器在每次请求时验证用户名和密码,这就是为什么大多数浏览器会保存用户名和密码至少一段时间的原因


如果你想让你的webapp更安全,你应该考虑给它增加你自己的安全性,包括会话和cookie。如何做到这一点取决于您的具体配置和使用的框架,因此我无法在这方面为您提供更多帮助。

我已经添加了会话和cookie。我只是想用摘要身份验证来保护管理区域。为什么tomcat总是要求输入密码?因为您是以这种方式配置的。HTTP摘要身份验证要求在每次请求时发送用户名和密码,因此您的浏览器会将其保存一段时间,或者每次请求都会被询问。您可能不应该使用HTTP摘要身份验证,而应该使用会话和cookie系统来验证密码,然后设置类似“admin”的cookie,然后在代码中检查密码。我明白了。因此,在对管理区域中的servlet执行请求之后,servlet应该使用会话cookie或类似的东西来响应,对吗?是的。您应该使用自己的密码验证来设置cookie或会话变量,而不是使用HTTP摘要身份验证。也许像这样的教程会有帮助