Аутентификация пользователя в Django - PullRequest
2 голосов
/ 07 ноября 2008

есть ли способ убедиться, что один пользователь вошел в систему только один раз?

Я бы хотел, чтобы в систему не входили два разных человека с одним и тем же логином / паролем.

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

Приветствия

Спасибо за ответы!

Ответы [ 2 ]

5 голосов
/ 07 ноября 2008

Вход в систему дважды неоднозначен по HTTP. Сигнал отсоединения отсутствует. Вы можете расстраивать людей, если не будете осторожны.

Если я закрою свой браузер и урону куки - случайно - мне может помешать войти снова.

Откуда сервер узнал, что я пытался повторно войти против меня, пытаясь войти дважды?

Вы можете попробовать такие вещи, как проверка IP-адреса. А что, если при случайном отключении маршрутизатора произошел сбой при освобождении аренды DHCP? Сейчас я пытаюсь повторно войти в систему, но у меня есть новый адрес и нет установленного файла cookie. Я не пытаюсь создать второй сеанс, я просто пытаюсь вернуться после того, как мой текущий сеанс был отключен.

Дело в том, что не существует устоявшегося правила для «одного сеанса», которое можно установить в платформе. Вы должны составить правило, соответствующее вашему приложению, и выяснить, как его применять.

4 голосов
/ 07 ноября 2008

Сайт, который я создал в прошлом году, был обеспокоен тем, что имена пользователей и пароли могут быть размещены на форуме. Я решил эту проблему, добавив модель и проверку в представлении входа в систему, в котором указывалось, с скольких уникальных IP-адресов использовалось имя за последние X часов. Я дал администраторам сайта два значения в settings.py, чтобы настроить количество часов и количество уникальных IP-адресов. Если имя «злоупотребляло», оно блокировалось для входа с новых IP-адресов, пока не прошло достаточно времени, чтобы упасть ниже порогового значения.

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

Ps. Код прост. Напишите мне на Питера в techbuddy dot нас, если хотите.

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