我已将server.xml主机部分中的域设置设置为以下内容:
<Realm className="org.apache.catalina.realm.JDBCRealm" driverName="org.gjt.mm.mysql.Driver"
connectionURL="jdbc:mysql://localhost:3306/test" connectionName="test" connectionPassword="test"
userTable="users" userNameCol="user_name" userCredCol="user_pass" userRoleTable="user_roles"
roleNameCol="user_role" />
同样在web.xml中:
<security-role>
<role-name>ADMIN</role-name>
</security-role>
<security-constraint>
<web-resource-collection>
<web-resource-name>critical</web-resource-name>
<url-pattern>/admin/*</url-pattern>
<http-method>GET</http-method>
<http-method>POST</http-method>
</web-resource-collection>
<auth-constraint>
<role-name>ADMIN</role-name>
</auth-constraint>
</security-constraint>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/login.jsp</form-login-page>
<form-error-page>/error.jsp</form-error-page>
</form-login-config>
</login-config>
我有数据库设置。但是当env熏制了login.jsp时,即使我输入了正确的密码,我也被重定向到了error.jsp
我想知道在此过程中是否有办法找出错误。我可以在Eclipse中执行此操作,还是可以解决该问题的任何其他提示?
答案 0 :(得分:14)
要从Realm身份验证步骤获取调试信息,请执行以下步骤。
定义Realm时,将debug =“9”添加到定义中。
您还需要将其添加到logging.properties文件中:
org.apache.catalina.realm.level = ALL
org.apache.catalina.realm.useParentHandlers = true
org.apache.catalina.authenticator.level = ALL
org.apache.catalina.authenticator.useParentHandlers = true
您可能还需要添加此项,以防止缓冲日志。如果这样做,请记得在完成调试后将其删除。
1catalina.org.apache.juli.FileHandler.bufferSize = -1
现在,领域的调试日志应该最终出现在catalina.out文件中。
答案 1 :(得分:0)
对于其他发现此问题的人,我发现以下适用于Tomcat 8.5.40:
java.util.logging.ConsoleHandler.level = ALL
org.apache.catalina.level = FINEST
org.apache.catalina.realm.JNDIRealm.level = FINEST
org.apache.catalina.realm.JNDIRealm.useParentHandlers = true
关键事实似乎是您的日志记录会经过几层定义,并且会被级别较低的第一层记录所修剪,因此您需要确保所经过的每一位都是FINEST或ALL。
希望这可以节省一些时间;)
伊恩。