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 框架)?