Auth-System простой способ сделать это как Amazon? - PullRequest
0 голосов
/ 11 января 2011

Есть ли простой способ настроить систему аутентификации в Django, как это делает amazon?

Если вы собираетесь войти в свою учетную запись amazon и собираетесь закрыть браузер даже после двухдни, когда вы снова заходите на веб-страницу, Amazon приветствует вас с вашим именем.Когда вы идете в магазин, вам все равно нужно повторно ввести пароль.

Возможно ли сделать это таким образом в Djanogo?Нужно ли делать что-то особенное в settings.py?

Насколько я знаю, я просто могу войти или выйти, даже когда я собираюсь закрыть браузер, я снова захожу безпрошу мой пароль.

Спасибо за помощь!

Craphunter

Ответы [ 2 ]

1 голос
/ 11 января 2011

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

Они точно объясняют, как добиться того, что вы просите: request.session.set_expiry(...).

0 голосов
/ 11 января 2011

Я думаю, что, скорее всего, то, что делает Amazon, зависит от времени, а не от того, закрываете ли вы браузер или нет. Поэтому, скорее всего, вам следует сохранить в сеансе последний раз, когда вы видели этого пользователя. Если вы видели их более часа назад, то автоматически выйдите из системы (для этого используйте Middleware ).

request.session['lastseen'] = datetime.datetime.now()

Теперь в вашем промежуточном программном обеспечении просто будьте осторожны при выходе из системы, так как вам все еще нужно хранить их id или username в сеансе. Это все еще легко сделать, просто прочитайте здесь: http://docs.djangoproject.com/en/dev/topics/auth/#how-to-log-a-user-out

Итак, в основном вы хотите выйти из системы, а затем после этого сохранить их id или просто username в сеансе, чтобы вы могли получить их позже. Выход из системы полностью очистит их сеанс, поэтому вам нужно обязательно добавить их id или username после выполнения команды logout(). Затем, куда бы вы ни захотели получить эти данные, вы просто извлекаете их из переменных сеанса.

logout(request.user)
request.session['userid'] = request.user.id

Теперь у вас есть три возможности для пользователя: AnonymousUser без сохранения id, AnonymousUser без сохранения id или Аутентифицированный пользователь.

Таким образом, даже если кто-то не вошел в систему, вы все равно можете получить его id из сеанса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...