Java JSP Tomcat安全约束总是失败

Java JSP Tomcat安全约束总是失败,java,jsp,tomcat,security-constraint,Java,Jsp,Tomcat,Security Constraint,我的web.xml中有以下内容 <security-constraint> <web-resource-collection> <url-pattern>/*</url-pattern> </web-resource-collection> <auth-constraint> <role-name>rolename</role-name>

我的web.xml中有以下内容

<security-constraint>
    <web-resource-collection>
        <url-pattern>/*</url-pattern>
    </web-resource-collection>
    <auth-constraint>
        <role-name>rolename</role-name>
    </auth-constraint>
</security-constraint>
<login-config>
    <auth-method>BASIC</auth-method>
</login-config>
<security-role>
    <role-name>rolename</role-name>
</security-role>
并且在我的tomcat-users.xml文件中还有以下内容:

<role rolename="rolename"/>
<user username="username" password="password" roles="rolename"/>
当我尝试导航到本地主机站点时,会出现“需要身份验证”对话框,但即使我输入了正确的凭据,对话框也会自动刷新,不会发生任何事情


这不起作用的原因是什么?似乎不像auth方法所建议的那样基本。

可能您忘记将安全角色标记置于安全约束标记级别

<security-role>
        <role-name>rolename</role-name>
    </security-role>

    <security-constraint>
        <web-resource-collection>
            <url-pattern>/*</url-pattern>
        </web-resource-collection>
        <auth-constraint>
            <role-name>rolename</role-name>
        </auth-constraint>
    </security-constraint>
    <login-config>
        <auth-method>BASIC</auth-method>
    </login-config>
请看这里的例子


当您在添加服务器时使用Netbeans,并在manager或manager脚本角色中配置现有用户和密码时,设置看起来是正确的,例如,如果您有:

如果您使用嵌入Netbeans的Tomcat服务器,则Tomcat文件有一个缓存位置,例如:

C:\Users\user\AppData\Roaming\NetBeans\8.2\apache-tomcat-8.0.27.0\u base\conf

如果您使用Eclipse IDE,tomcat的缓存文件将保留在以下文件夹中:

C:\projects\workspace\Servers\tomcatv8.5服务器在localhost配置中


我在安全约束之外添加了安全角色标记,与您的示例中的级别相同,但这仍然不能解决问题。您使用IDE吗?还是您直接运行Tomcat?我使用的是NetBeans 8.2。我已经将上面的代码部署到我的Web服务器上,它在上面运行良好。因此,似乎在本地主机开发人员机器上使用它需要一些不同的东西。我正在尝试通过命令行启动和停止服务器,以排除IDE。非常感谢这一点,我正在使用NetBeans,是的,它正在使用自己的tomcat-users.xml文件,这解释了为什么它不能作为我的用户工作,而角色不在那里。