繁体   English   中英

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

[英]How to check if a Django user is still logged in from the client side only?

安全不是问题。

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

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

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

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

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

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

在模板中包含以下代码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM