0

可能只有我一个人,但我很难理解如何使用 Shiro 插件保护 Grails 应用程序中的一些页面。

我在我的安全过滤器中使用它:

类 SecurityFilters {
  def 过滤器 = {
    全部(uri:“/**”){
      之前 = {
        // 忽略直接视图(例如默认的主索引页面)。
        if (!controllerName) 返回真

        // 按照惯例进行访问控制。
        访问控制(身份验证:假)
      }
    }
  }
}

我在我的引导程序中创建了一个用户:

    def adminRole = 新角色(名称:“管理员”)
    adminRole.addToPermissions("secured1")
    adminRole.addToPermissions("secured2:create,save,edit,update")
    adminRole.save()

    def user = new User(username: "admin", passwordHash: new Sha512Hash("***").toHex())
    user.addToRoles Role.findByName('Administrator')
    用户保存()

它有效。问题是,它还保护所有控制器/操作。

我希望,可以不在我的 SecurityFilter 中指定我想要保护的操作,而只能在权限中指定。但这可能吗?

4

1 回答 1

1

静态属性“过滤器”允许您定义多个过滤模式。您可以使用“uri”参数或“控制器”参数。如果您使用“控制器”,您还可以添加“动作”参数。这些参数中的每一个都采用正则表达式,因此您可以执行以下操作:

admin(uri:"/admin/**")
...
browseStore(controller:"store", action:"(show|list)")
...
shopStore(controller:"store", action:"*")
...

查看http://www.grails.org/Filters了解更多信息。

于 2010-02-05T14:24:10.353 回答