2012-06-25 35 views
0

在我的系統中,我爲用戶分配了許多角色(讓我們假設3現在爲ROLE_ADMIN, ROLE_USER, ROLE_SERVICES)。在我的一個控制器中(讓我們假設SearchController我們有三個動作serviceIndex{}, userIndex{} and adminIndex{}),我希望任何角色的用戶都能夠訪問兩個操作(前兩個)。對於最終操作,我想限制對單個角色類型的用戶(可以說是ROLE_USER)的操作,但允許訪問其他角色的用戶(即到ROLE_ADMIN, ROLE_SERVICE。我的請求映射表中有類似如下的內容:在spring安全核心中爲grails配置requestmap時出錯

config_attribute ------------------------------------------------ -----------> url
ROLE_ADMIN,ROLE_SERVICE,ROLE_USER ------------------------------ >/search/serviceIndex
ROLE_ADMIN,ROLE_SERVICE,ROLE_USER ------------------------------->/search/userIndex
ROLE_ADMIN,ROLE_SERVICE ----------------------------------------->/search/adminIndex

由於第三條規則指出URL'/ search/adminIndex'對ROLE_USER不可訪問,因此具有該角色的用戶應該已被拒絕訪問該URL的授權。但是,用戶仍然可以訪問該網址。什麼是正確的配置。我確實嘗試了一些像/search/adminIndex/**,但那也行不通。在附註中,沒有一個網址會有後綴,但是如果用戶操縱網址就像加入後綴/search/userIndex/56a以防萬一,我仍然希望阻止訪問。

問候, dipess

回答

1

由於通過規則的插件進行迭代,並應用於當前URL匹配的第一個,我會先設定adminIndex再有別的一個包羅萬象。

ROLE_ADMIN,ROLE_SERVICE   /search/adminIndex 
ROLE_ADMIN,ROLE_SERVICE,ROLE_USER /search/** 
+0

即使您可能是對的,但由於每個URL都不相同,因此這種邏輯看起來有缺陷。我真的不明白爲什麼OP的當前配置不能工作。 – Gregg

+0

其中一個原因可能是其他未粘貼的規則在粘貼任何粘貼前匹配。在那種情況下,我的答案也是錯誤的。 –

相關問題