JDBCRealm правильно настроен, но нет успешного подключения
Я отправляю этот вопрос после тщательного поиска в Интернете, и никакой подобной ситуации не найдено. Я пытаюсь использовать JDBCRealm для аутентификации пользователей в простом тестовом веб-приложении, развернутом с Tomat 7.0.42 и MariaDB 5.5 в среде разработки. Я выполнил все шаги, описанные в инструкции Tomcat, и вот что у меня есть:
Дескриптор развертывания моего приложения:
<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's 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, а не $CATALINA_HOME. В средах разработки $CATALINA_BASE указывает на $(WORKSPACE_DIR)/. Metadata/.plugins/org.eclipse.wst.server.core/tmp0. Таким образом, файл jar драйвера MariaDB находится в $(WORKSPACE_DIR)/. Metadata/.plugins/org.eclipse.wst.server.core/tmp0/lib/mariadb-java-client.jar, а сертификат открытого ключа - в $(WORKSPACE_DIR)/. метаданные /.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 не может установить соединение с базой данных, но почему?
1 ответ
Я просто сказал, что значение роли для моего пользователя в базе данных не соответствует значению