Азотная сессия - PullRequest
       34

Азотная сессия

2 голосов
/ 14 марта 2011

Во всех моих азотных страницах я использую следующую семантику:

main() -> 
case wf:user() /= undefined of 
    true  -> main_authorized();
    false -> wf:redirect_to_login("/login")
end.

Когда пользователь вошел в систему и на странице, содержащей форму, если время ожидания сеанса он все еще может сделать сообщение формы, что приводит кнекоторые проблемы в логике моего сайта, так как незарегистрированный пользователь должен быть перенаправлен на страницу входа, есть ли способ, которым я могу добиться такого поведения без необходимости проходить через всю функцию событий всех моих страниц и искать этот случай?

Спасибо взаранее и с уважением

1 Ответ

4 голосов
/ 27 мая 2011

Nitrogen предоставляет разработчику приложения возможность определять и устанавливать модуль обратного вызова авторизации.

Вместо логики main/0, которую вы описываете в каждом из ваших обработчиков страниц, вы можете определить обработчик авторизации, как в следующем Gist, который я написал в феврале: https://gist.github.com/830529

Функция init/2 в определяемом вами модуле обратного вызова security_handler (при условии, что вы подключаете его при запуске с помощью nitrogen:handler/2) будет выполнена до функции main/0 в обработчике вашей страницы.

Чтобы убедиться, что никакая часть обработчика страницы POST не выполняется, вы должны вызвать wf:status_code/1 с аргументом 401. Затем укажите соответствующую страницу входа, обслуживаемую 401 ответом согласно конфигурации вашего веб-сервера.

...