答案 0 :(得分:1)
首先想到的是:cookie不可信任。
现在,Django确实提供了一个将用户数据存储在cookie中的系统...... cookie-based sessions ...它们不是默认值,但提供了选项。记下文档中的警告 - cookie中的数据是“已签名但未加密” - 这意味着用户(以及有权访问该cookie的任何人)可以以纯文本格式查看保存在cookie中的数据,但如果他们尝试为了改变数据,cookie将被视为无效。
(请注意,所有Django会话都使用cookie,但其他会话类型如database-backed sessions不会将您与用户会话关联的数据存储在cookie本身中,cookie只是一个令牌)
所以,鉴于可以在cookie中安全地存储数据,为什么我们会说“不要这么做”关于登录状态呢?
主要原因是,当Django提供标准,安全且经过深思熟虑的身份验证系统时,发明自己的半生不熟的登录方案毫无意义:
https://docs.djangoproject.com/en/dev/topics/auth/
如果您需要在客户端知道用户是否已登录,最常见的方法可能是将视图中的变量传递给模板,例如request.user.is_authenticated
并呈现一些不同的HTML或写入将一个var输出到一个javascript块中。
仅在Javascript中,您还可以检查是否存在会话cookie。
答案 1 :(得分:0)
除了给出的答案:有些人倾向于使用饼干阻滞剂。
如果您在冲浪时清除Cookie,则可以更改状态。