Selcuk Yasar Caliskan:
Estoy tratando de utilizar la autenticación de JDBC en la primavera de arranque. Estoy tratando de utilizar una tabla diferente a los usuarios '' por defecto. Sin embargo, con este método
@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=?");
}
Con el esquema de la tabla dada: [! [F] [1]] [1]
Obtuve el siguiente error:
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.
¿Qué puedo hacer para usar mi propia tabla de datos de usuario para la autenticación de JDBC?
jayesh:
puede actualizar su consulta añadiendo habilitado como tercer parámetro de seleccionar
SELECT email as USERNAME, PASSWORD as password, enabled FROM [user_account] WHERE email=?