2017-06-13 46 views
0

我在web.xml中JSP Tomcat安全约束总是失败

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

认证请求当我尝试导航到我的本地主机站点时会出现对话框,但即使我输入了正确的凭证,对话框也会刷新本身,并且没有任何反应。

为什么这不起作用的原因?看起来不像认证方法所建议的那么基本。

+0

您是否在使用IDE?还是你直接运行Tomcat? –

+0

我正在使用NetBeans 8.2。我已经将上面的代码部署到了我的网络服务器上,并且它可以正常工作。所以看起来像在本地主机开发机器上需要一些不同的东西。我试图通过命令行来启动和停止服务器,以排除IDE。 –

回答

1

设置看起来是正确的,当你将你配置管理器或管理脚本角色的现有用户和密码的服务器时使用NetBeans,例如,如果您有:

enter image description here

如果您使用的是谁上台嵌入Netbeans的有Tomcat的文件缓存的地方Tomcat服务器,如:

C:\用户\用户\应用程序数据\漫游\ NetBeans的\ 8.2 \ Apache的Tomcat的8.0 .27.0_base \ CONF

enter image description here

如果你使用Eclipse IDE中的缓存文件的tomcat停留在文件夹中:

C:\项目\工作区\服务器\ Tomcat的V8.5服务器在本地主机,配置

enter image description here

+0

非常感谢这个,我使用的是NetBeans,是的,它使用自己的tomcat-users.xml文件,这解释了为什么它不起作用,因为我的用户和角色不在那里。 –

0

也许你忘了将安全角色标签放在安全约束标签的级别。

<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

+0

我在security-constraint之外添加了security-role标签(与您的示例中的级别相同),但这仍然无法解决问题。 –