Фильтры запроса Grails: каков источник этого таинственного метода авторизации?
Я создаю собственный класс фильтра аутентификации в Grails. Это работает, но меня беспокоит, что я не знаю, почему это работает.
В следующем фильтре запросов Grails, где и как определяется метод "role"? Он должен быть частью плагина Nimble для Grails, но я не вижу его в NimbleFilterBase, который расширяет мой класс фильтра.
public class MySecurityFilters extends MyCustomExtensionOfNimbleFilterBase {
def filters = {
reports(controller: 'foo', action: 'bar') {
before = {
accessControl {
role('Administrator')
}
}
}
Кроме того, что именно является блоком "accessControl"? Это встроенная часть Grails, или что-то, что каким-то образом обеспечивает Nimble, или просто механизм случайного выбора, от которого я мог бы избавиться?
Спасибо!
2 ответа
Проворный использует Широ, и это функции Широ. Смотрите документы на http://grails.org/plugin/shiro
Метод accessControl встраивается в MetaClass с помощью ShiroGrailsPlugin в doWithDynamicMethods() - см. Http://plugins.grails.org/grails-shiro/trunk/ShiroGrailsPlugin.groovy
Метод роли определен в http://plugins.grails.org/grails-shiro/trunk/src/groovy/org/apache/shiro/grails/FilterAccessControlBuilder.groovy
Ссылки выше не действительны.
Это текущие:
https://github.com/pledbrook/grails-shiro/blob/master/ShiroGrailsPlugin.groovy