4

我一直在尝试使用 Spring 安全性来学习不同的东西。我设置了具有“用户”表和“权限”表的基本结构的授权。所以我的身份验证提供程序如下所示。

    <authentication-provider>
        <password-encoder hash='md5'>
            <salt-source user-property="username"/>
        </password-encoder> 
        <jdbc-user-service data-source-ref="dataSource"/>
    </authentication-provider>

通过这种方式,我没有指定查询来获取用户详细信息,因为我使用默认数据库模式。因此,尽管我没有使用“authorities-by-username-query”属性,但 Spring 正在使用默认查询(“选择用户名,权限来自用户名 = 的权限?”和“选择用户名,密码,从用户名 = 的用户启用? ") 所以事情进展顺利。

现在我想尝试权威团体。所以我根据模式创建表。我的问题如何激活组权限?JdbcDaoImpl 的 API 文档说使用“enableGroups”属性来启用“基于组的权限”。但是“基于群体的权威”没有这样的属性。由于 Spring 有默认查询,我认为不需要明确给出它。

所以有人可以在这里帮助我使用默认查询启用基于组的权限。

4

1 回答 1

5

不幸的是jdbc-user-service不提供对enableGroups属性的访问。所以你必须使用 spring 的 bean 命名空间手动配置这个 bean。我认为你可以尝试这样的事情:

<authentication-provider user-service-ref="jdbcDaoImpl">
    <password-encoder hash='md5'>
        <salt-source user-property="username"/>
    </password-encoder> 
</authentication-provider>


<beans:bean id="jdbcDaoImpl" class="org.springframework.security.core.userdetails.jdbc.JdbcDaoImpl">
    <property name="enableGroups" value="true" />
    <property name="enableAuthorities" value="false" />
    <property name="dataSource" ref="dataSource" />
</beans:bean>    
于 2013-03-18T14:14:07.710 回答