Плагин Grails facebook для проверки сеанса в каждом контроллере

Я использую Grails и плагин facebook graph для регистрации пользователей. Однако вместо проверки сеанса facebook в каждом действии и контроллере. Есть ли лучший способ проверить сеанс перед входом в контроллер? Таким образом, мне не нужно дублировать код для проверки подлинности.



class FacebookSecurityFilters {

    def filters = {
        all(controller:'*', action:'*') {
            before = {
                println "test"
            }
            after = {

            }
            afterView = {

            }
        }
    }
}


Я создал этот фильтр с помощью команды Grails create-filters. Но он вообще не срабатывает, я имею в виду, что он вообще не печатал «тест». Нужно ли регистрировать фильтр? Я использую Grails1.4M01

Спасибо


person toy    schedule 16.07.2011    source источник


Ответы (1)


Используйте фильтр — это отличный способ перехватить все действия или подмножество действий на основе шаблона: http://grails.org/doc/latest/guide/6.%20The%20Web%20Layer.html#6.6%20Filters

person Burt Beckwith    schedule 16.07.2011
comment
Я создал файл с именем SecurityFilters, и это класс содержимого SecurityFilters { def filter = { println test loginCheck(controller: '', action: '') { println test before = { if(!session .facebook){ ошибка печати из фильтра перенаправления (uri:/) } } } } } - person toy; 17.07.2011
comment
но он вообще не вызывается. Я что-то упускаю? - person toy; 17.07.2011
comment
у вас есть пустые строки для контроллера и действия, но они должны быть подстановочными знаками, например. controller:'*', action:'*' - также удалить 1-й println "test" и переместить 2-й в блок before - person Burt Beckwith; 17.07.2011
comment
Извините, я вставил новый код, сгенерированный командой grails, но он все равно не сработает. :( - person toy; 17.07.2011
comment
Одна вещь, мои контроллеры находятся в упаковке. Это имеет значение? (например, com.mycom.LoginController) - person toy; 17.07.2011
comment
Нет, контроллеры должны быть в пакетах, но имя, которое вы указываете в шаблоне, является «логическим» именем, например. «Контроллер входа в систему». Но это не в игре здесь, так как вы перехватываете все. Попробуйте grails clean принудительно выполнить полную компиляцию. - person Burt Beckwith; 17.07.2011