我在互联网上彻底搜索后发现这个问题,没有发现任何情况。我正在尝试使用JDBCRealm在开发环境中使用Tomat 7.0.42和MariaDB 5.5部署的简单测试Web应用程序中对用户进行身份验证。我已经按照Tomcat's How-To中解释的所有步骤进行了操作,这就是我所拥有的:
我的应用的部署描述符:
<error-page>
<error-code>403</error-code>
<location>/WEB-INF/jsp/desautorizado.jsp</location>
</error-page>
<security-constraint>
<web-resource-collection>
<web-resource-name>Acciones</web-resource-name>
<url-pattern>/actions/*</url-pattern>
</web-resource-collection>
<web-resource-collection>
<web-resource-name>Paginas</web-resource-name>
<url-pattern>/sel_tipo_tabla.jsp</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>estandar</role-name>
</auth-constraint>
<user-data-constraint>
<transport-guarantee>CONFIDENTIAL</transport-guarantee>
</user-data-constraint>
</security-constraint>
<security-role>
<role-name>estandar</role-name>
</security-role>
<login-config>
<auth-method>FORM</auth-method>
<form-login-config>
<form-login-page>/WEB-INF/jsp/login.jsp</form-login-page>
<form-error-page>/WEB-INF/jsp/desautorizado.jsp</form-error-page>
</form-login-config>
</login-config>
Tomcat的conf / server.xml:
<Engine defaultHost="localhost" name="Catalina">
<Host appBase="webapps" autoDeploy="true" name="localhost" unpackWARs="true">
<Context docBase="MyAppStruts" path="/MyAppStruts" reloadable="true" source="org.eclipse.jst.jee.server:MyAppStruts">
<Realm className="org.apache.catalina.realm.LockOutRealm">
<Realm className="org.apache.catalina.realm.JDBCRealm"
driverName="org.mariadb.jdbc.Driver"
connectionURL="jdbc:mariadb://localhost:3306/desa"
connectionName="ruben"
connectionPassword="acceso"
userTable="usuarios"
userNameCol="usuario"
userCredCol="password"
userRoleTable="roles"
roleNameCol="rol" />
</Realm>
</Context>
</Host>
</Engine>
如果我使用UserDatabaseRealm(Tomcat的默认使用conf / tomcat-users.xml文件),它的工作正常。但是,如果我使用JDBCRealm,我总是被重定向到错误页面,即使我在数据库中引入了现有的用户/密码。
我忘了提到我正在使用Eclipse进行部署,因此所有内容都与$ CATALINA_BASE和 NOT $ CATALINA_HOME相关。在开发环境中,$ CATALINA_BASE指向$(WORKSPACE_DIR)/。metadata / .plugins / org.eclipse.wst.server.core / tmp0。因此,MariaDB驱动程序jar文件位于$(WORKSPACE_DIR)/。metadata / .plugins / org.eclipse.wst.server.core / tmp0 / lib / mariadb-java-client.jar中,公钥证书位于$(WORKSPACE_DIR) )/。metadata / .plugins / org.eclipse.wst.server.core / tmp0 / hogar.keystore(没问题)。
通过观察日志,我注意到每当我重置服务器时(仅在重新启动,甚至在向我的应用程序发送第一个请求之前),写入以下行:
127.0.0.1 - - [27 / Oct / 2013:21:29:32 +0100]“GET / HTTP / 1.1” 404 961
Eclipse的控制台选项卡中未显示任何错误或异常。我猜Tomcat无法建立与数据库的连接,但是,为什么?
答案 0 :(得分:0)
我只是说我的用户在数据库中的角色值与&lt; security-role&gt;的值不匹配。和部署描述符中的&lt; auth-constraint&gt;。