2013-03-18 51 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