【问题标题】:Spring Group authorities, how to activate with default querySpring Group 权限,如何使用默认查询激活
【发布时间】:2013-03-06 20:56:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: spring login spring-security


    【解决方案1】:

    很遗憾,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>    
    

    【讨论】:

    • 工作感谢。 :) 如果有 jdbc-user-service isnt' 的属性,那还是很酷吗?
    猜你喜欢
    • 1970-01-01
    • 2019-04-25
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 1970-01-01
    • 2012-02-24
    相关资源
    最近更新 更多