2011-12-03 59 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

相关问题