Django用户会话,Cookie和超时

时间:2013-07-23 06:55:12

标签: python django session cookies django-models

我正在使用Django应用程序,我目前的目标是使用cookie跟踪用户会话。我有一种感觉,就像我一样,我的理解有点偏执。

对于初学者,我想管理自用户登录以来已经存在多长时间,如果他们没有访问“x中的新页面,我可以成功将其注销“ 小时。我不确定究竟什么是标准(对于社交网络)。

这些信息是否存储在我的服务器上? Cookie实际上是否具有相关性?我之前使用过的cookie来存储像用户时区这样的东西,但是我很难处理如何跟踪用户的问题。

我目前在用户后端方面的所有内容都来自django.contrib.auth包。

我真正知道如何通过使用if request.user.is_authenticated():等语句来“抓取”用户的信息。

我意识到这是一个复杂的问题,所以我会尝试缩小范围:

如何扩展有关当前用户的现有信息以捕获“上次活动”,以便我们可以在一段时间内未使用该网站时将他/她注销? 我是否需要定义自定义用户模型

我的下一步是创建一个不同类型的用户,所以我觉得我需要制作自定义用户模型 - 除了扩展普通用户表单以制作个人资料等。

感谢您的理解,

我知道当我不理解事情时,我会感到困惑。

感谢您的时间,

詹姆斯

1 个答案:

答案 0 :(得分:7)

您可以配置session中间件以自动注销用户, 将SESSION_COOKIE_AGE配置为某个较低的值,并将SESSION_SAVE_EVERY_REQUEST提供为True

这将在某些不活动后自动注销用户,而无需扩展配置文件。

 SESSION_COOKIE_AGE
 Default: 1209600 (2 weeks, in seconds)
 >> The age of session cookies, in seconds.

 SESSION_SAVE_EVERY_REQUEST
 Default: False
 >> Whether to save the session data on every request. 
 If this is False (default), then the session data will only be saved if it has been modified – that is, if any of its dictionary values have been assigned or deleted.

要创建自定义/扩展User个人资料Django 1.5configurable User model附带,请查看docs以获取示例。