Может быть, только я, но мне трудно понять, как защитить только некоторые страницы приложения Grails с помощью плагина Shiro.Закрепите некоторые, но не все страницы в приложении 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, но только в разрешениях. Но возможно ли это?
Правда, но я думал, что могу определить, что в addToPermissions на роли, поэтому мне не нужно делать это в SecurityFilter. Но спасибо за ваш ввод – sbglasius
Фильтры, в которых происходит контроль доступа. Если у вас есть какая-то магия, которая позволяет вам применять контроль доступа, создавая разрешение, поделитесь им. Существует обсуждение разрешений для подстановочных знаков здесь: http://www.grails.org/plugin/shiro Обратите внимание, что даже несмотря на то, что разрешения подстановочных знаков могут быть похожими на контроллер: действие: макет id, который вы используете для использования в MVC, который нет никакой связи между этими двумя при использовании плагина grails siro. – Brandon
Привет Брэндон: Я знаю, что нужны SecurityFilters, но я не хочу писать несколько из них. Только один, и обрабатывать остальные разрешения из таблиц User and Role. – sbglasius