2010-02-05 5 views
0

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

ответ

1

Статический фильтр свойств позволяет определить несколько шаблонов фильтрации. Вы можете использовать параметр «uri» или параметр «controller». Если вы используете «контроллер», вы также можете добавить параметр «действие». Каждый из этих параметров принимает регулярное выражение, так что вы можете делать такие вещи, как:

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

Выезд http://www.grails.org/Filters для получения дополнительной информации.

+0

Правда, но я думал, что могу определить, что в addToPermissions на роли, поэтому мне не нужно делать это в SecurityFilter. Но спасибо за ваш ввод – sbglasius

+0

Фильтры, в которых происходит контроль доступа. Если у вас есть какая-то магия, которая позволяет вам применять контроль доступа, создавая разрешение, поделитесь им. Существует обсуждение разрешений для подстановочных знаков здесь: http://www.grails.org/plugin/shiro Обратите внимание, что даже несмотря на то, что разрешения подстановочных знаков могут быть похожими на контроллер: действие: макет id, который вы используете для использования в MVC, который нет никакой связи между этими двумя при использовании плагина grails siro. – Brandon

+0

Привет Брэндон: Я знаю, что нужны SecurityFilters, но я не хочу писать несколько из них. Только один, и обрабатывать остальные разрешения из таблиц User and Role. – sbglasius

 Смежные вопросы

  • Нет связанных вопросов^_^