我已经配置我的应用程序以使用基于表单的身份验证,并在server.xml中设置所需的设置。在tomcat中基于JSP web应用程序的身份验证
当我试图访问受保护的页面,我正确地重定向到登录页面。在登录页面上,我提供了正确的用户名和密码,但它不会将我登录,而是显示登录错误页面。
我使用Eclipse在Mac OS X上运行非常久远的MySQL数据库,Tomcat中的项目提前
感谢。
我已经配置我的应用程序以使用基于表单的身份验证,并在server.xml中设置所需的设置。在tomcat中基于JSP web应用程序的身份验证
当我试图访问受保护的页面,我正确地重定向到登录页面。在登录页面上,我提供了正确的用户名和密码,但它不会将我登录,而是显示登录错误页面。
我使用Eclipse在Mac OS X上运行非常久远的MySQL数据库,Tomcat中的项目提前
感谢。
终于搞定了这个工作!
由于我使用Eclipse部署应用,日食增加其中包含的server.xml这实际上是当Tomcat是使用eclipse开始使用Tomcat的项目命名的服务器。
因此,解决办法是使境界更改的server.xml中的服务器项目蚀。
感谢您对所有您的帮助和支持你们。
最好的问候, 查希尔
下面是基于表单的身份验证在web.xml资源,并声明部分定义的安全性。
<security-constraint>
<web-resource-collection>
<web-resource-name>profile</web-resource-name>
<url-pattern>/myProfile</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>member</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/signin.jsp</form-login-page>
<form-error-page>/signin_error.jsp</form-error-page>
</form-login-config>
</login-config>
<security-role><role-name>member</role-name></security-role>
这里是server.xml中的领域定义。
<Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
driverName="com.mysql.jdbc.Driver"
connectionURL="jdbc:mysql://localhost/dbname?user=root&password=root"
userTable="users" userNameCol="email" userCredCol="password"
userRoleTable="user_roles" roleNameCol="role_name"/>
此外请注意,我已经在tomcat的lib文件夹中包含了所需的mysql jar文件。
这是我的登录表单。
试图帮助我在这里<form class="form" id="login_form" action="j_security_check" method="post">
<input class="element" id="element_1" style="WIDTH: 255px" maxlength="200" name="j_username"/>
<input class="element" id="element_2" style="WIDTH: 255px" type="password" maxlength="200" name="j_password"/>
</form>
谢谢你们,我真的停留在此!
为了记录,这应该已被添加到您的问题,而不是提供作为答案 – ChssPly76 2009-08-26 19:15:09
您的配置对我来说是正确的。两个可能的问题:
您是否正在将应用程序部署到非根环境?如果是这样,您可能需要将表单动作更改为/j_security_check
。无论如何,你可能会想尝试这个,实际上 - 我记得一些Tomcat版本对此非常挑剔。
你确定你有users(email, password)
和user_roles(email, role_name)
表与他们相应的行和他们接触到的领域配置指定的用户?我知道你说过你是这样做的,但这是关于唯一可能出错的其他事情,所以双重检查不会受到伤害。
如果没有上述帮助,我可以建议的唯一的事情是你下载的Tomcat源,并通过它一步的Eclipse下运行一段时间。对于Tomcat 6,你会希望把一个断点org.apache.catalina.realm.JDBCRealm.authenticate(String username, String credentials)
(线341,虽然我可能没有最新的源),并通过open()
和第二authenticate()
方法步骤。
ChssPly76,感谢您的答复。我不明白你说的第一点是什么意思,但无论如何我都试过了,它不起作用,因为那时它寻找localhost:8080/j_security_check,这是不合时宜的。我有双重检查我的数据库定义,他们都没问题。我想我现在没有选择,只能通过tomcat的源代码。我会尽快回复你们。 是的,我的答复不是作为回答,而是作为评论,但我想在回复中格式化XML和HTML,所以我将其作为评论发布。下次我会小心的。 干杯 – 2009-08-27 12:37:45
您可以发布您的web.xml,也许一些日志片断? – chotchki 2009-08-25 23:41:06
同时在登录页 – ChssPly76 2009-08-25 23:44:56
上发布你的server.xml(你定义Realm的部分)和你的表单声明。请看下面我的回复。当我使用eclipse启动tomcat时,我看不到任何日志。但是当我单独启动tomcat时,我看到日志并没有看到任何异常。我还应该提到,我已经界定了必要的表格,并在领域定义中提及了这些表格。 – 2009-08-26 14:28:02