当前位置: 首页 > 知识库问答 >
问题:

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

况鸿雪
2023-03-14
package hompage

import logindetails.*
import login.User
import grails.plugins.springsecurity.Secured;

class RedirectController
{
    def springSecurityService

    def index() { }

    /**
     * This method will redirect the user if it has the role "ROLE_ADMIN"
     */
    @Secured(['ROLE_ADMIN'])
    def adminhomepage =
    {
        render(view: "adminhome")
    }

    /**
     * This method will redirect the user if it has the role "ROLE_USER"
     */
    @Secured(['ROLE_USER'])
    def userhomepage=
    {
        render(view: "userhome")
    }
}

这是我的代码,我想重定向到adminhome当且仅当角色ROLE_ADMIN和userhome如果角色ROLE_USER。

请帮助我实现此代码。

我正在使用netbean IDE,并有警告(如红色感叹号,通常显示为java代码)导入导入grails.plugins.springsecurity.安全

unable to resolve class grails.plugins.springsecurity.Secured @ line 5, column 1.

即使导入存在,我也没有得到它,有什么问题?

共有3个答案

朱英范
2023-03-14

我也在Netbean中收到了警告;它对我没有任何影响。一切仍然编译和运行良好。

@安全注释不会做任何形式的重定向——它只是确保一旦您被发送到那里,您就被允许执行该操作。

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

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

grails.plugins.springsecurity.securityConfigType = "Annotation"

然后重新启动应用程序,并尝试以没有ROLE\u user的用户身份访问adminhomepage。如果他们仍然可以到达那里,请确保他们确实没有ROLE\u USER。

如果这是在登录时重定向某人,有更全面的方法来处理这个问题,比如创建一个自定义的Auth成功处理程序,但这有点复杂。要以这种方式进行重定向,我会这样做:

    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
    }
邬浩涆
2023-03-14

检查你的类路径,做一个grails清理,并确保插件存在于BuildConfig.groovy.

翁翰
2023-03-14

包已从grails.plugins重命名为grails.plugin

import grails.plugin.springsecurity.annotation.Secured

请用这个。参考:来源

 类似资料:
  • 我正在尝试使用Spring 3.2.4和Spring Security 3.2保护我的RESTful API,并使用@Secured注释。我有以下设置: 网状物xml: servlet上下文。xml: 安全上下文。xml 我正在以编程方式将customUserDetailsService中的自定义角色(ROLE\u GROUP、ROLE\u DIVISION、ROLE\u READ、ROLE\u

  • 本文向大家介绍全面解析Java中的注解与注释,包括了全面解析Java中的注解与注释的使用技巧和注意事项,需要的朋友参考一下 注解 一、什么是 Annotation? (注解 or 注释) Annotation, 准确的翻译应该是 -- 注解。 和注释的作用完全不一样。 Annotation 是JDK5.0及以后版本引入的一个特性。 与类、接口、枚举是在同一个层次,可以成为java 的一个类型。 语

  • 我正在尝试从https://github.com/dmahapatro/grails-spring-security-rest-sample.gitRestSpring安全插件 我将grails升级到2.3.7,将spring security rest升级到1.3.4。一切都很顺利。 我正在使用postman测试其余的登录名。 网址:表单数据:用户名=用户,密码=密码 但是总是有返回错误代码40

  • 我正在尝试配置Spring Security注释,我已经设法在xml中设置了Spring Security配置(由intercept-url元素配置),但是现在我想在我的beans中使用安全注释。但是当试图在没有记录的情况下访问安全控制器方法时,安全注释被完全忽略。这是我的控制器bean: 和登录控制器: 和配置:web.xml Spring-套筒.xml 和Spring安全.xml 如果需要,我

  • 我使用的是Grails 2.2.2,通过在BuildConfig中添加以下几行,我已经安装了spring-security-core-2.0-RC2。groovy文件: 插件安装成功,我已经使用s2快速入门脚本创建了安全域和控制器。 现在,我用以下代码更新了我的一个控制器: 但是,当我尝试运行该应用程序时,出现以下错误: |错误编译错误:启动失败:C:\workspace\SW开发\生产\MyGr

  • 这是关于V.4(MVC+安全性)的。我实现了,其中在方法中向用户授予其权限。让我们简单地说: 还有一个安全控制器,其中有一个带有注释的带注释的方法: 正如您在方法中看到的,我显式地将角色授予了用户。但是,当我尝试访问时,我得到一个异常: 2016-04-19 10:25:16,899 DEBUG(http-nio-8080-exec-9)[org.springframework.security.