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

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

谢谢。

【问题讨论】:

    标签: django request session-variables


    【解决方案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 装饰器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-03-20
        相关资源
        最近更新 更多