【问题标题】:Grails Spring Security @Secured not workingGrails Spring Security @Secured 不起作用
【发布时间】:2012-01-12 00:00:48
【问题描述】:

我已经能够在我的应用程序的一个控制器中实现@Secured 注释。然而,@Secured('ROLE_ADMIN') 在项目中的其他任何地方都不起作用。

它只能在我的程序控制器中的任何地方特别工作,而在其他地方没有。

例如,如果我这样使用它;

@Secured('ROLE_ADMIN')

IDE 给了我; 此行有多个标记 - Groovy:class Secured 不是@Secured 中的注解 - Groovy:无法解析 Secured 类,无法为

找到类

我什至尝试检查 Spring Security Config 文件以检查注释是否设置正确(看起来确实如此)。 有任何想法吗?请帮忙。

谢谢。

【问题讨论】:

  • 我也有同样的问题。以下解决方案没有帮助。

标签: spring grails spring-security


【解决方案1】:

您可能缺少所需的导入。

在您需要注解的每个控制器的顶部,对 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 {

}

希望这会有所帮助。

【讨论】:

  • 这对我不起作用。它没有找到 grails.plugins.springsecurity。我正在使用 spring-security-core:2.0-RC2
  • spring security插件发生了变化,注解现在在package import grails.plugin.springsecurity.annotation.Secured中
【解决方案2】:

试试这个:

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

并在spring配置中添加注解支持:

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

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

【讨论】:

  • 感谢您的回复,丹尼斯。它仍然给我“-Groovy:unable to resolve class PreAuthorize, cannot find class for annotation”和“-Groovy:class PreAuthorize is not an annotation in @PreAuthorize”错误。我在 spring 安全配置文件中设置了“注释”,但它似乎无法识别我的 programController() 之外的注释。很奇怪。
  • 也许你错过了spring上下文中的注解配置?我添加了这个来回答
  • @Denis Loshkarev,把它放在哪里? applicationContext.xml?
猜你喜欢
  • 2021-09-27
  • 2011-07-28
  • 2017-04-18
  • 2014-09-04
  • 2015-12-10
  • 1970-01-01
  • 2015-09-20
  • 2015-08-02
  • 1970-01-01
相关资源
最近更新 更多