可能只是我,但我很难理解如何使用Shiro插件保护Grails应用程序中的某些页面。
我在安全过滤器中使用它:
class SecurityFilters { def filters = { all(uri: "/**") { before = { // Ignore direct views (e.g. the default main index page). if (!controllerName) return true // Access control by convention. accessControl ( auth:false) } } } }
我在我的bootstrap中创建了一个用户:
def adminRole = new Role(name: "Administrator") 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') user.save()
它有效。问题是,它还可以保护所有控制器/操作。
我希望,可以不在我的SecurityFilter中指定我想要保护的操作,但只能在权限中指定..但这可能吗?
答案 0 :(得分:1)
静态属性“过滤器”允许您定义多个过滤模式。您可以使用'uri'参数或'controller'参数。如果您使用'controller',您还可以添加'action'参数。这些参数中的每一个都采用正则表达式,因此您可以执行以下操作:
admin(uri:"/admin/**")
...
browseStore(controller:"store", action:"(show|list)")
...
shopStore(controller:"store", action:"*")
...