tomcat中基于JSP web应用程序表单的身份验证
我已将应用程序配置为使用基于表单的身份验证,并在server.xml中设置了所需的设置tomcat中基于JSP web应用程序表单的身份验证,tomcat,Tomcat,我已将应用程序配置为使用基于表单的身份验证,并在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" userTabl
<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"/>
当我尝试访问受保护的页面时,我被正确重定向到登录页面。在登录页面上,我提供了正确的用户名和密码,但它不会让我登录,而是显示登录错误页面
我使用Eclipse在Tomcat和MacOSX上的MySQL数据库中运行该项目
提前感谢。这里是定义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>
轮廓
/我的个人资料
成员
形式
/signin.jsp
/signin_error.jsp
成员
下面是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>
谢谢你们在这里帮助我,我真的被困住了 您的配置在我看来是正确的。两个可能的问题:
/j\u security\u check
。你可能想试试这个,事实上-我记得一些Tomcat版本对此相当挑剔用户(电子邮件、密码)
和用户角色(电子邮件、角色名称)
表,其中包含适当的行,并且在领域配置中指定的用户可以访问这些表吗?我知道你说过你会的,但这是唯一一件可能出错的事情,所以再检查一遍也不会有什么坏处如果以上两种方法都没有帮助,我唯一能建议您下载Tomcat源代码,并在Eclipse下运行时逐步完成。对于Tomcat 6,您需要在
org.apache.catalina.realm.JDBCRealm.authenticate(字符串用户名、字符串凭据)
(第341行,尽管我可能没有最新的源代码)中设置一个断点,然后逐步执行open()
和第二个authenticate()
方法 终于让它工作了
当我使用eclipse部署我的应用程序时,eclipse添加了一个名为Servers的项目,其中包含server.xml,当tomcat使用eclipse启动时,它实际上由tomcat使用
因此,解决方案是在eclipse中对Servers项目中的server.xml进行领域更改
谢谢你们的帮助和支持
致以最良好的祝愿,
Zaheer你可以发布你的web.xml和一些日志片段吗?也可以发布你的server.xml(你定义领域的部分)和你的表单声明到登录页面。请看下面我的回复。当我使用eclipse启动tomcat时,我看不到任何日志。但是当我启动tomcat standalone时,我看到了日志,没有看到任何异常。我还应该提到,我已经定义了必要的表以及领域定义中引用的表。作为记录,这应该添加到您的问题中,而不是作为答案提供。谢谢您的回答。我不明白你说的第1点是什么意思,但我无论如何都试过了,但它不起作用,因为它在寻找本地主机:8080/j#u security#u check,当然不存在。我已经仔细检查了我的数据库定义,它们是正确的。我想我现在别无选择,只能逐步浏览tomcat的源代码。我会给你们回个最新消息。是的,我的回复不应该作为答案,而是作为评论,但我想在回复中格式化XML和HTML,所以我把它作为评论发布。下次我会小心的。干杯