【问题标题】:Django custom middlewareDjango 自定义中间件
【发布时间】:2016-01-24 10:21:41
【问题描述】:

我正在尝试创建一个自定义中间件类,该类将使用另一个数据(不是该数据所在的点)检查来自 cookie 的令牌并返回用户名或一些错误。

我想应该在 process_request 方法中完成,但是如何将此用户名进一步赋予 process_view 方法?

在我的模板中,我想像这样使用 smth:

{% if logged_in then _show_username else _show_loginform_ %}

【问题讨论】:

  • 如果你只想在模板中检查用户是否登录,你可以使用:{% if user.is_authenticated %} your_code_for_showing_username {% else %} your_code_for_login_form {% endif %}
  • @Yaaaaaaaaaaaay 我猜它只适用于会话身份验证过程,我使用的是令牌。我错了吗?
  • 是的,它只适用于 Django 的身份验证过程。但是,如果您仍想使用自己的令牌,则会与 DRY(不要重复自己)的概念发生冲突......

标签: django authentication django-middleware


【解决方案1】:

你可以做和标准认证中间件一样的事情;将用户对象添加到请求中。

def process_request(self, requess):
    username = <...get from token...>
    request.username = username

现在您可以通过{{ request.username }} 从模板访问它(假设您已启用请求上下文处理器)。

【讨论】:

  • 我试过添加这样的薄 + TEMPLATE_CONTEXT_PROCESSORS = ( 'django.core.context_processors.request', ) 但是在尝试访问模板中的用户名时仍然出现错误。我要{% load ... %}做什么?
  • 抱歉,我忽略了模板中的一些错字。现在可以了,非常感谢!解决了我的问题:-)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-18
  • 2013-08-21
  • 1970-01-01
相关资源
最近更新 更多