Может быть, только я, но мне трудно понять, как защитить только некоторые страницы в приложении Grails с помощью плагина Shiro.
Я использую это в моем фильтре безопасности:
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)
}
}
}
}
и я создал пользователя в моей начальной загрузке:
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 можно НЕ указывать действия, которые я хочу защитить, а только в разрешениях. Но возможно ли это?