如何检查Django用户是否仍然只从客户端登录?

时间:2011-08-08 14:27:41

标签: javascript django cookies authentication

安全不是问题。

我需要在页面上显示“您以用户名身份登录”,但不想仅为此删除缓存中的视图,因此我希望能够在javascript中执行此操作。

我不想对此过程做任何重要的事情,只需检查cookie是否仍然有效,如果是,则显示欢迎消息,过度显示登录链接。

重点是不要点击数据库并节省服务器,因为我们每天在这台机器上有120000个用户,所以我需要:

  • django.contrib.auth Cookie的名称,以便我可以阅读;
  • 我应该从中读取数据以确定用户仍然登录
  • 从中提取用户名的方法

如果我找不到这样做的方法,我会回过头来创建一个身份验证后端,在登录时设置一个额外的cookie,并在退出时删除它。

2 个答案:

答案 0 :(得分:9)

sessionid Cookie存在并且有一个到期日期。您可以检查是否仍然有效,这表明他们已将其记录下来。你无法通过这种方式获得用户名,你必须添加自定义cookie。

答案 1 :(得分:2)

在模板中包含以下代码。

{% 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;