Как проверить, зарегистрирован ли пользователь Django только со стороны клиента? - PullRequest
11 голосов
/ 08 августа 2011

Безопасность здесь не проблема.

Мне нужно отобразить «Вы вошли как имя пользователя» на странице, но не хотите удалять представление из кэша только для этого, поэтому я надеюсь, что смогу сделать это в javascript.

Я не хочу критиковать этот процесс, просто проверьте, является ли cookie все еще действительным, и, если это так, отобразите приветственное сообщение, а затем ссылку для входа в систему.

Весь смысл не в том, чтобы поразить базу данных и не пощадить сервер, поскольку у нас есть 120000 пользователей в день на этой единственной машине, поэтому мне нужно:

  • имя файла cookie django.contrib.auth, чтобы я мог его прочитать;
  • данные, которые я должен прочитать из него, чтобы решить, что пользователь все еще вошел в систему
  • способ извлечь из него имя пользователя

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

Ответы [ 2 ]

9 голосов
/ 08 августа 2011

Файл cookie sessionid существует и имеет срок действия.Вы могли бы проверить, является ли это все еще действительным, который предположил бы, что они зарегистрированы это.Вы не можете получить имя пользователя таким образом, вам придется добавить собственный файл cookie.

2 голосов
/ 10 мая 2015

В вашем шаблоне есть код, подобный приведенному ниже.

{% block top %}<script async="async" defer="defer" type="text/javascript" src="{% static 'users/js/geo.js' %}"

{% if user.is_authenticated %} data-authenticated="true" {% endif %}

></script
>{% endblock %}

И проверьте, аутентифицирован ли ваш код, например:

unsafe_authenticated = 'true' === document.currentScript.dataset.authenticated;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...