2013-03-18 47 views
4

我一直在用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获取用户详细信息。因此,虽然我没有使用“按用户名查询的权限”属性,但Spring使用的是默认查询(“选择用户名,权限来自用户名=?”和“选择用户名,密码, “)所以事情运作良好。

现在我想尝试与权威组织。所以我根据模式创建表。我的问题如何激活组权限? API documentation for JdbcDaoImpl表示使用“enableGroups”属性启用“基于组的权限”。但“基于群体的权威”并没有这种财产。由于春天有default query我认为没有必要明确地给它。

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

回答

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>  
+0

工作感谢。 :) 如果有jdbc-user-service isnt的属性,它仍然会很酷吗? – 2013-03-19 04:11:39

+0

是的,它会很酷! – 2013-03-19 09:23:35