Возможно, это только я, но мне сложно понять, как защитить только некоторые страницы в приложении 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, а только в разрешениях .. Но возможно ли это?