0

基于文档(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。

更新:我得到了 sessionid request.session.session_key。问题是 sessionid 是在登录后创建的。如果您在创建密钥之前请求密钥 - 它会创建新密钥而不是发出任何警告。

4

1 回答 1

4

我为用户创建了额外的字段(用户属性扩展了用户):

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)
于 2011-03-29T13:30:59.543 回答