2011-12-03 100 views
2

我已經能夠在我的應用程序的一個控制器中實現@Secured註釋。然而,@Secured('ROLE_ADMIN')不會在項目的其他任何地方工作。Grails Spring Security @Secured不工作

它只會在我的程序控制器中的任何地方專門工作,而沒有其他地方。

例如,如果我這樣使用它;

@Secured('ROLE_ADMIN') 

IDE給我;在這條線 多個標記 - Groovy:在類擔保不@Secured 註釋 - Groovy:在無法解決類保護,無法找到類

我甚至試圖檢查春季安全配置文件檢查如果註釋設置正確(看起來他們是)。 任何想法?請幫忙。

謝謝。

+0

我有同樣的問題。下面的解決方案沒有幫助。 –

回答

9

你可能缺少必要的進口。

在每個需要註釋的控制器的頂部,使用Secured的grails導入。然後,您可以根據需要使用類或方法的註釋。

import grails.plugin.springsecurity.annotation.Secured 

//import grails.plugins.springsecurity.Secured; - this is in older version, 
//            grails 2.0 and older 

@Secured(['ROLE_ADMIN', 'ROLE_USER', 'ROLE_SUPERVISOR']) 
class myClass { 

} 

希望這會有所幫助。

+1

很棒!謝謝! – jmarcosSF

+0

這對我不起作用。它沒有找到grails.plugins.springsecurity。我使用spring-security-core:2.0-RC2 –

+2

Spring安全插件發生了變化,註釋現在在包導入grails.plugin.springsecurity.annotation.Secured – ibaralf

0

試試這個:

@PreAuthorize("hasRole('ROLE_ADMIN')") 

,春天配置中添加註解支持:

<!-- Allow configuration annotation (@Annotation-based configuration)--> 
<context:annotation-config /> 

<!-- Enable scan classes --> 
<context:component-scan base-package="com.your.package" /> 
+1

謝謝你的回覆,丹尼斯。它仍然給我「-Groovy:無法解決類的PreAuthorize,無法找到類的註釋」和「-Groovy:類PreAuthorize不是@PreAuthorize中的註釋」錯誤。 我已經在spring安全配置文件中設置了「Annotation」,但它似乎無法識別我的programController()之外的註釋。很奇怪。 – jmarcosSF

+0

也許你錯過了春天的註釋配置?我加了這個回答 –

+0

@Denis Loshkarev,在哪裏放置它? 'applicationContext.xml'? – Athlan

相關問題