簡體   English   中英

django每個用戶一個會話

[英]django one session per user

基於文檔( http://docs.djangoproject.com/en/1.1/topics/http/sessions/ )(是-1.1)Django為所有用戶創建了唯一會話。 登錄的用戶包含_auth_user_id 我如何在登錄中實現這種檢查:

If new_login._auth_user_id in database:
   delete(sessions_containing_same_id_except_new_one)

主要思想是每個用戶僅允許一個會話並刪除舊會話。

更新:現在的想法是在登錄時保存sessionid,如果sessionid更改,則在替換之前刪除舊條目。 ATM缺少的部分是獲取該會話ID。

更新:我得到了具有request.session.session_key的sessionid。 問題是登錄創建了sessionid。 如果您在創建密鑰之前要求它-它會創建一個新密鑰而不發出任何警告。

我為用戶創建了額外的字段(userattributes擴展了用戶):

class UserAttributes(User):
    last_session_key = models.CharField(blank=True, null=True, max_length=40)

和方法:

def set_session_key(self, key):
    if self.last_session_key and not self.last_session_key == key:
        Session.objects.get(session_key=self.last_session_key).delete()
    self.last_session_key = key
    self.save()  

登錄后我就叫它:

auth.login(request, user)
user.userattributes.set_session_key(request.session.session_key)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM