Django 如何知道用户是谁?

Posted

技术标签:

【中文标题】Django 如何知道用户是谁?【英文标题】:How does Django know who the user is? 【发布时间】:2015-05-20 02:24:27 【问题描述】:

根据 Django documentation,如果 Django 安装激活了 AuthenticationMiddleware,HttpRequest 对象有一个“user”属性,表示当前登录的用户。请求对象如何知道用户是什么?中间件是否将用户设置在 cookie 中,并在用户登录后将该 cookie 保存到客户端浏览器?在我的代码中,我在用户登录后将用户 ID(来自 auth_user 表)保存到会话变量中,并且我通常在每个页面上检查它。如果此信息在请求对象中始终可用,则我不需要这样做。我需要做的就是检查request.user.id。这是正确的吗?

谢谢。

【问题讨论】:

【参考方案1】:

是的,您已经知道了,除了用户数据存储在会话中。通过自己跟踪所有这些,您正在做多余的工作——这是 Django 擅长的! 查看this documentation on user objects .. 和this article on all of it specifically.

【讨论】:

【参考方案2】:

用户 ID 不是存储在 cookie 中,而是存储在会话中。

是的,您不应该自己在会话中保存这些数据:

if request.user.is_authenticated():
    user_id = request.user.id

如果视图应该仅对登录用户可用,则不要检查request.user.is_authenticated(),而是使用@login_required 装饰器。

【讨论】:

以上是关于Django 如何知道用户是谁?的主要内容,如果未能解决你的问题,请参考以下文章

如何知道哪个用户被分配给了令牌(JWT Django rest 框架)?

Django基础---web框架 和 django 介绍

如何检查哪个用户使用 Django 登录?

php增删改查实例第十九节 - session的使用: 让服务器知道你是谁?

MindSpore:不用摘口罩也知道你是谁

用户研究