JSP Tomcat 安全约束总是失败

JSP Tomcat security-constraint always fails

我的 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-method 所建议的那样基本。

可能您忘记将 security-role 标签放在 security-constraint 标签级别。

<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>

看这里的例子

http://docs.oracle.com/javaee/5/tutorial/doc/bncbe.html

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

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

C:\Users\user\AppData\Roaming\NetBeans.2\apache-tomcat-8.0.27.0_base\conf

如果您使用 Eclipse IDE,缓存文件 tomcat 位于文件夹中:

C:\projects\workspace\Servers\Tomcat v8.5 服务器位于 localhost-config