Это не единственный способ сделать это, но ...
Все клиентские запросы поступают в FilterManager, который строит FilterChain на основе деталей запроса. В FilterChain, если ресурс является ресурсом, для которого требуется состояние входа в систему, а клиент не вошел в систему, запрос может быть перенаправлен. Исходный запрос можно сохранить и перенаправить на страницу входа, что позволяет продолжить исходный запрос (это необязательно).
Это шаблон проектирования J2EE, но вы можете реализовать его на любом языке, как только получите идею. В этом случае один из «фильтров» является «фильтром аутентификации». См. http://java.sun.com/blueprints/corej2eepatterns/Patterns/InterceptingFilter.html для деталей идеи (на Java).
Преимущество этого состоит в том, что все страницы будут централизовать свою логику в FilterManager, поэтому страница должна иметь только свой вызов FilterManager. Кроме того, вы можете добавить отладочные фильтры / фильтры журналов / и т. Д., Которые могут помочь в поддержке / разработке вашего кода.