org.postgresql.util.PSQLException:列索引超出范围:3,列数:2
org.postgresql.util.PSQLException: The column index is out of range: 3, number of columns: 2
我决定通过使用 spring security
和数据库添加身份验证来修改我的应用程序。在我使用 user
和 XML 中的 password
的普通身份验证之前。效果很好。
我的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.
我在 XML 文件中的 sql
语法有什么问题?
Spring 安全性需要用户查询中的三列,顺序为:
- 用户名
- 密码
- 已启用(布尔值)
你没有最后一个。如果您的数据库中没有 "enabled" 的等价物,您可以使用 TRUE
常量。
我决定通过使用 spring security
和数据库添加身份验证来修改我的应用程序。在我使用 user
和 XML 中的 password
的普通身份验证之前。效果很好。
我的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.
我在 XML 文件中的 sql
语法有什么问题?
Spring 安全性需要用户查询中的三列,顺序为:
- 用户名
- 密码
- 已启用(布尔值)
你没有最后一个。如果您的数据库中没有 "enabled" 的等价物,您可以使用 TRUE
常量。