Я нахожусь в центре написания веб-приложения в CherryPy. Я настроил его так, чтобы он использовал OpenID auth и мог успешно получить идентификатор пользователя/адрес электронной почты.Проверка состояния входа на каждую страницу загрузки в CherryPy
Я бы хотел, чтобы он устанавливался так, чтобы всякий раз, когда страница загружается, он проверяет, вошел ли пользователь в систему, и если да, то отображает некоторую информацию об их логине.
Как я понимаю, основной рабочий процесс должен быть таким:
- Есть ли идентификатор хранится в текущей сессии? Если это так, мы золотые.
- Если нет, имеет ли пользователь файлы cookie с идентификатором пользователя и логином входа? Если это так, обработайте их, аннулируйте текущий токен и назначьте новый, и добавьте информацию пользователя в сеанс. Еще раз, мы хорошие.
- Если ни одно из условий не выполняется, отобразите ссылку «Вход», направляющую мою форму OpenID.
Очевидно, что я мог бы просто включить код (или декоратор) на каждую публичную страницу, которая бы справилась с этим. Но это кажется очень ... раздражающим.
Я также мог бы установить метод по умолчанию index
в каждом классе, который будет делать это, а затем использовать вспомогательный метод (по страницам) для отображения остальной части содержимого. Но это похоже на кошмар, когда дело доходит до случая разоблачения, кроме index
.
Итак, я надеюсь, что есть ли способ в CherryPy установить код, который будет запускаться всякий раз, когда будет получен запрос? Если это так, я могу использовать это, чтобы настроить его так, чтобы текущий сеанс всегда включал всю необходимую мне информацию.
В качестве альтернативы, можно ли создать обертку вокруг декоратора cherrypy.expose
, чтобы каждая открытая страница также запускала этот код?
Или, не удалось ни одного из них: я также открыт для предложений о другом рабочем процессе. Раньше я не писал такую систему, и всегда готов к советам.
Edit: Я включил ответ ниже о том, как добиться того, чего я хочу. Однако, если у кого-то есть предложения по изменению рабочего процесса, мне бы очень понравился совет! Спасибо всем.