java - 如何调试 Tomcat 中的领域功能?

标签 java tomcat

我已将 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> 

我已经设置了数据库。然而,当调用 login.jsp 时,即使我输入了正确的密码,我也被重定向到 error.jsp

我想知道是否有办法在这个过程中找出问题所在。我可以在 Eclipse 或任何其他可能解决问题的提示中执行此操作吗?

最佳答案

要从 Realm 身份验证步骤中获取调试信息,请遵循此过程。

当您在 server.xml 中定义您的 Realm 时,将 debug="9"添加到定义中(您当然可以使用较小的数字以获得较少的细节)。

<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" 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 文件中结束。

关于java - 如何调试 Tomcat 中的领域功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12311496/

相关文章:

java - 在 servlet 中安全地处理密码

javascript - 如何使用正确的协议(protocol)从基于java的程序接收activemq websocket stomp

java - 在 ConditionalOnExpression 评估期间 PropertySource 不可用

java - 单个 Eclipse 动态 Web 项目中的多个 Web 内容目录

apache - 在设计 Java EE 应用程序时,包 org.eclipse.swt.dnd 显示错误

java - 找不到 UsernamePasswordAuthenticationToken 的 AuthenticationProvider - Spring-boot + Oauth2 : Restful API

java - 动态网站 build 的信息收集和选择其架构

java - 无法执行存储过程 (jdbc)。 'noAccessToProcedureBodies=true'

java - 非静态 webapp 别名

mysql - 如何配置 tomcat 以在 OpenShift 中与 mysql 一起工作?