0

尝试登录时出现错误(或者,当我使用转义中止 HTTP 基本对话框时)

HTTP 状态 401 - PreparedStatementCallback;错误的 SQL 语法 [select username,authority from authority where username = ?]; 嵌套异常是 org.postgresql.util.PSQLException:错误:关系“权限”不存在位置:32

但是,当我想使用基于组的安全性时,使用下面的两个查询属性还不够吗?我是否需要为此属性定义查询?authorities-by-username-query=""为什么它不起作用?

<security:authentication-manager>
    <security:authentication-provider>
        <security:jdbc-user-service data-source-ref="dataSource"
                                    users-by-username-query="..."
                                    group-authorities-by-username-query="..." />
    </security:authentication-provider>
</security:authentication-manager>

来自 JdbcDaoImpl 的来源:

if (enableAuthorities) {
    dbAuthsSet.addAll(loadUserAuthorities(user.getUsername()));
}

if (enableGroups) {
    dbAuthsSet.addAll(loadGroupAuthorities(user.getUsername()));
}
4

1 回答 1

0

是 enableGroups 还是设置为 false 的问题吗?似乎没有一种方法可以使用命名空间配置中的 jdbc-user-service 元素来配置它。Spring JIRA issue SEC-1625似乎证实了这一点。

尝试将 JdbcDaoImpl 实例声明为 bean。

于 2013-05-02T21:49:10.927 回答