При выполнении аутентификации JDBC в Spring Boot я должен использовать таблицу «пользователи» по умолчанию? - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь использовать аутентификацию JDBC в Spring Boot. Я пытаюсь использовать таблицу, отличную от «пользователей» по умолчанию. Но с этим методом

@Override
protected void configure(AuthenticationManagerBuilder auth) throws Exception {
    auth.jdbcAuthentication().dataSource(dataSource)
        .usersByUsernameQuery("SELECT email as USERNAME, PASSWORD as password FROM [user_account] WHERE email=?");
}

С заданной схемой таблицы: [! [Е] [1]] [1]

Я получаю следующую ошибку:

17:34:29.800 [http-nio-8081-exec-1] INFO  o.s.j.support.SQLErrorCodesFactory - SQLErrorCodes loaded: [DB2, Derby, H2, HSQL, Informix, MS-SQL, MySQL, Oracle, PostgreSQL, Sybase, Hana]
17:34:29.806 [http-nio-8081-exec-1] WARN  o.s.s.o.p.endpoint.TokenEndpoint - Handling error: [![enter image description here][2]][2]InternalAuthenticationServiceException, PreparedStatementCallback; SQL [SELECT email as USERNAME, PASSWORD as password FROM [user_account] WHERE email=?]; The index 3 is out of range.; nested exception is com.microsoft.sqlserver.jdbc.SQLServerException: The index 3 is out of range.

Что я могу сделать, чтобы использовать мою собственную таблицу данных пользователя для аутентификации JDBC?

1 Ответ

0 голосов
/ 29 августа 2018

вы можете обновить свой запрос, добавив в качестве третьего параметра параметр enable для выбора

SELECT email as USERNAME, PASSWORD as password, enabled FROM [user_account] WHERE email=?

...