簡體   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