Сохранить переменные POST во время перенаправления входа в систему в GAE? - PullRequest
3 голосов
/ 22 мая 2011

в форме, я отправляю данные обработчику веб-приложения python (все на основе Google App Engine), используя запрос HTTP POST.В этом сценарии я сначала проверяю, вошел ли пользователь в систему, и если нет, я использую users.create_login_url (...), чтобы сначала перенаправить пользователя на страницу входа.

Как я могу убедиться, что после входа в системупользователь не просто снова перенаправляется в мой скрипт на python, но также сохраняются переменные POST?Единственным способом, который я нашел, было преобразование всех переменных POST в параметры URL и добавление его в URL.

Возможно ли это вообще?

Ответы [ 2 ]

2 голосов
/ 22 мая 2011

Обычно я бы сохранял это в переменных сеанса.Я использовал gae-сеансы раньше и мне было легко.Это сохраняется в хранилище данных и memcaches за кулисами для скорости.Выглядит это так:

from gaesessions import get_current_session
session = get_current_session()
if session.is_active():
    c = session.get('counter', 0)
    session['counter'] = c + 1
    session['blah'] = 325
    del session.blah  # remove 'blah' from the session

Или вы можете использовать все HTML5y и использовать localStorage.

1 голос
/ 22 мая 2011

Общая проблема с захватом POST и превращением его в GET заключается в том, что во-первых, строка запроса в GET имеет ограниченный размер, зависящий от браузера, и, во-вторых, POST может быть формой / составной частью (что делать с загруженный файл становится проблемой).

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

Люди, которые решат не входить в систему, оставят осиротевшие записи, которые вы можете очистить с помощью задания cron.

...