Grails Spring安全插件@Secured注释未解析

Grails Spring安全插件@Secured注释未解析,grails,spring-security,Grails,Spring Security,这是我的代码,当且仅当角色为role\u ADMIN时,我想重定向到adminhome,如果角色为role\u USER,我想重定向到userhome 请帮我实现这个代码 我使用的是netbeans IDE,对于import grails.plugins.springsecurity.security,有一个警告(如java代码中通常显示的红色感叹号) 即使存在导入,我也不知道问题出在哪里?检查您的类路径,进行grails清理,并确保插件存在于BuildConfig.groovy中。我也在Net

这是我的代码,当且仅当角色为role\u ADMIN时,我想重定向到adminhome,如果角色为role\u USER,我想重定向到userhome

请帮我实现这个代码

我使用的是netbeans IDE,对于import grails.plugins.springsecurity.security,有一个警告(如java代码中通常显示的红色感叹号)


即使存在导入,我也不知道问题出在哪里?

检查您的类路径,进行grails清理,并确保插件存在于BuildConfig.groovy中。

我也在Netbeans中得到警告;这对我没有任何影响。一切仍然可以编译并运行良好

@Secured注释不会执行任何类型的重定向-它只是确保一旦您被发送到那里,就允许您执行该操作

我想确保我理解-无论他们扮演什么角色,如果有人进入“adminHomeController/index”,他们是被重定向到“adminHomeController/adminHomeController.gsp”还是被提供了“adminHomeController/index.gsp”?如果它们被重定向,那么您提供的代码中没有任何内容会导致这种情况。您有任何URL映射可以做到这一点吗

或者真正的问题是,如果某人没有角色用户,他们仍然可以进入“adminHomeController/adminhomepage”?如果发生这种情况,请确保配置文件中包含以下内容:

unable to resolve class grails.plugins.springsecurity.Secured @ line 5, column 1.
然后重新启动应用程序,并尝试以没有角色\用户的用户身份访问adminhomepage。如果他们仍然可以到达那里,确保他们真的没有角色用户

如果这是在登录时重定向某人,则有更全面的方法来处理此问题,例如创建自定义AuthSuccessHandler,但这有点复杂。要以这种方式执行重定向,我将执行以下操作:

grails.plugins.springsecurity.securityConfigType = "Annotation"

我遵循了您评论中列出的相同教程,遇到了相同的问题。正如在这篇文章中已经指出的,“错误”并没有阻止我的任何代码从命令行生成。但是作为一个Grails初学者,在游戏的早期看到最基本的应用程序的小红色X可能会让人沮丧

由于应用程序是从命令行编译和运行的,所以IDE肯定有问题。我检查了我的插件,没有列出Spring Security。右键单击插件->打开Grails插件管理器并通过STS进行安装。它将卸载并重新安装相同的插件。我正在运行一个旧版本的STS,所以希望新版本能修复这个问题


希望这能帮助那些偶然发现这个旧线程的人。

这个包已经从grails.plugins重命名为grails.plugin

    import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils.*

    def index() {
      if(ifAnyGranted("ROLE_ADMIN")) {
           redirect(action: 'adminhomepage')
      } else if(ifAnyGranted("ROLE_USER")) {
           redirect(action: 'userhomepage')
      }
    }

    def adminhomepage() {
        //admin stuff
    }

    def userhomepage() {
        //user stuff
    }
请用这个。
Ref:

基本上,我只想知道,如果登录用户的角色是role_ADMIN,那么只有def adminhomepage()应该被执行,如果用户是普通用户,那么def userhomepage()就会被执行。好吧,你没有真正回答我问的任何问题,你也没有在原始帖子中提到role_ADMIN或def userhomepage()。查看我的编辑,如果不起作用,请详细解释发生了什么。基本上,我使用的是spring security核心插件,用于用户管理部分。我正在学习spring安全代码教程,这里是链接。blog.springsource.org/2010/08/11/…在此链接中,您将找到PostController()类,其中表示一旦在任何方法中定义了注释,它将检查角色,然后执行该方法,否则它不会。我已编辑了我的原始帖子,请查看并建议解决方案检查此处链接已断开。修复了断开的链接,谢谢
    import org.codehaus.groovy.grails.plugins.springsecurity.SpringSecurityUtils.*

    def index() {
      if(ifAnyGranted("ROLE_ADMIN")) {
           redirect(action: 'adminhomepage')
      } else if(ifAnyGranted("ROLE_USER")) {
           redirect(action: 'userhomepage')
      }
    }

    def adminhomepage() {
        //admin stuff
    }

    def userhomepage() {
        //user stuff
    }
import grails.plugin.springsecurity.annotation.Secured