0

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

4

2 回答 2

1

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

在此处输入图像描述

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

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

在此处输入图像描述

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

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

在此处输入图像描述

于 2017-06-13T16:27:29.670 回答
0

可能你忘了把 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

于 2017-06-13T13:26:41.380 回答