我有一个小应用程序,我需要实现tomcat身份验证。在挖掘互联网之后,我发现Realm就是解决方案。我还得到了如何配置我的tomcat-users.xml,server.xml和web.xml。 但它仍然无效。
我在web.xml中添加了这段代码
<security-constraint>
<web-resource-collection>
<web-resource-name>hp</web-resource-name>
<url-pattern>/pages/bill.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>Admin</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>BASIC</auth-method>>
<realm-name>default</realm-name>>
</login-config>
在login-config,我得到的元素'login-config'不能有字符[children],因为类型的内容类型 仅限元素。 可能是什么问题?
答案 0 :(得分:4)
您的XML无效 - 您有两个“&gt;”字符
更正
中的数据结尾<login-config>
<auth-method>BASIC</auth-method>>
<realm-name>default</realm-name>>
</login-config>
到
<login-config>
<auth-method>BASIC</auth-method>
<realm-name>default</realm-name>
</login-config>
我不确定tomcat会为你的无效xml提供什么错误,但它当然不能正常工作。
答案 1 :(得分:3)
这个问题可能已经在这个网站的其他地方得到了回答。但这里有一些帮助。
不要使用BASIC(也不是DIGEST)身份验证,请使用FORM身份验证。这就是原因:How to force Jetty to ask for credentials with BASIC authentication after invalidating the session?
您可能首先要从(Form authentication&amp;)Memory Realm开始(也就是说,在tomcat-users.xml中定义了uers&amp;角色),然后可能会使用JDBC领域,&amp;最后是DatasourceRealm。
阅读Tomcat documentation,了解这首爵士乐是如何运作的。
我写了一些关于这个主题的注释(认证方法和领域),看看,应该比下面的tomcat文档更容易。 https://sites.google.com/site/adrienitnotes/java/web-apps-login-system-in-tomcat-container创建新服务器时,会将一组配置文件从Tomcat安装导入(复制)到工作区中Servers项目下的相应文件夹中。有时这个文件不会被eclipse更新,因此您的更改将被忽略。
解决方案1:建议通过手动在Tomcat中部署.war文件来运行此类应用程序(在Eclipse外部运行Tomcat)。
解决方案2:在localhost-config \ tomcat-users.xml中修改\ Servers \ Tomcat v7.0服务器,并进行相关更改 可能 修复此问题。
答案 2 :(得分:1)
我碰巧偶然发现了这个老问题,很久以前你可能已经解决了这个问题,但我认为无论如何我都可以提供答案。
>
和</auth-method>
之后您有额外的</realm-name>
个字符。删除它们应该可以解决问题。