org.postgresql.util.psqlexception:列索引超出范围:3,列数:2

q0qdq0h2  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(767)

我决定修改我的应用程序,通过使用 spring security 和数据库。在我使用普通身份验证之前 user 以及 password 在xml中。效果不错。
我的 authentication-manager 看起来像这样

<authentication-manager>
    <authentication-provider>
        <jdbc-user-service data-source-ref="dataSource"
        users-by-username-query="select username, password from pmc.username_password where username=?;"
        authorities-by-username-query="select a.username, b.role from pmc.username_password a, pmc.username_role b where a.username = b.username and a.username=?;" />
    </authentication-provider>
</authentication-manager>

但当我尝试验证时,我遇到了一个异常

org.springframework.security.authentication.InternalAuthenticationServiceException: PreparedStatementCallback; SQL [select u
sername, password from pmc.username_password where username=?;]; The column index is out of range: 3, number of columns: 2.;
 nested exception is org.postgresql.util.PSQLException: The column index is out of range: 3, number of columns: 2.

我脑子里怎么了 sql xml文件中的语法?

rbpvctlc

rbpvctlc1#

spring security要求用户查询中有三列,顺序如下:
用户名
密码
已启用(布尔值)
你没有最后一个。如果数据库中没有“enabled”的等价项,可以使用 TRUE 不变。

相关问题