authenticationmanagerbuilder Spring Security jdbcAuthentication errore di schema predefinito su PostgreSQL



spring security 5 login example (1)

È davvero impossibile usare lo schema di default per la sicurezza di primavera su PostgreSQL, la parte "varchar_ignorecase" does not exist e non può essere sostituita?

Sto solo testando le impostazioni predefinite.

auth.jdbcAuthentication()
            .dataSource(dataSource)
            .withDefaultSchema();

E sotto c'è l'errore

Caused by: org.springframework.beans.factory.BeanDefinitionStoreException: Factory method [public javax.servlet.Filter org.springframework.security.config.annotation.web.configuration.WebSecurityConfiguration.springSecurityFilterChain() throws java.lang.Exception] threw exception; nested exception is org.springframework.jdbc.datasource.init.ScriptStatementFailedException: Failed to execute SQL script statement at line 1 of resource class path resource [org/springframework/security/core/userdetails/jdbc/users.ddl]: create table users(username varchar_ignorecase(50) not null primary key,password varchar_ignorecase(500) not null,enabled boolean not null); nested exception is org.postgresql.util.PSQLException: ERROR: type "varchar_ignorecase" does not exist

Answer #1

Perché lo schema predefinito non è adatto a PostgreSQL, ho bisogno di creare il mio schema e implementare la propria query per la query dell'utente e dell'autorità.

auth.jdbcAuthentication()
                .dataSource(dataSource)
                .usersByUsernameQuery(
                        "select username,password, enabled from users where username=?")
                .authoritiesByUsernameQuery(
                        "select username, role from user_roles where username=?");




postgresql-9.1