Django 中的中间件是什么


中间件组件只不过是一个遵循特定 API 的 Python 类。在 Django 中,中间件是一个小的插件,在处理请求和响应时在后台运行。应用程序的中间件用于完成一项任务。例如,安全、会话、CSRF 保护和身份验证等功能。Django 自带各种内置中间件,并允许我们开发自己的中间件。Django 项目的 settings.py 文件配备了各种中间件,用于为应用程序提供功能。例如,安全中间件用于确保应用程序的安全。Django 中还有许多此类中间件,每个中间件都有不同的功能。

Django 带有一些内置中间件,可以帮助处理可能出现的一些问题。在 Django 项目中的 settings.py 文件中编写中间件。默认情况下,项目创建时内置的中间件如下所示。

#located in the settings.py
MIDDLEWARE = [
   'django.middleware.security.SecurityMiddleware',
   'django.contrib.sessions.middleware.SessionMiddleware',
   'django.middleware.common.CommonMiddleware',
   'django.middleware.csrf.CsrfViewMiddleware',
   'django.contrib.auth.middleware.AuthenticationMiddleware',
   'django.contrib.messages.middleware.MessageMiddleware',
   'django.middleware.clickjacking.XFrameOptionsMiddleware',
]

Django 项目包含许多内置中间件。下面提到了一些最常用的中间件。

身份验证支持中间件

此中间件支持身份验证。每个传入的HttpRequest对象都获得 request.user 属性,该属性表示当前登录的用户。这在 settings.py 中声明,是一个非常重要的中间件,因为它会检查登录用户的真实性。它有助于检测虚假帐户。

中间件类 − django.contrib.auth.middleware.AuthenticationMiddleware。

会话支持中间件

此中间件启用会话支持。此会话架构允许您基于每个站点访问者存储和检索任意数据。它通过在服务器端存储数据来抽象发送和接收 Cookie 的过程。Cookie 只存储哈希会话 ID,而不是数据本身,这可以保护您免受大多数 Cookie 问题的困扰。

中间件类 − django.contrib.sessions.middleware.SessionMiddleware。

常用中间件

此中间件增加了一些额外的好处,使开发人员的工作更轻松。它禁止访问 ``DISALLOWED_USER_AGENTS`` 设置中的用户代理:如果您想使用此设置,则应将其设置为已编译的正则表达式对象的列表。这些对象将与每个传入请求的用户代理标头进行匹配。

import re
DISALLOWED_USER_AGENTS =
   ( re.compile(r'^reddit_bot'),
   re.compile(r'^Bingbot')

中间件类 − django.middleware.common.CommonMiddleware。

其他一些内置中间件,例如安全中间件,在保护您的网站免受可能执行 SQL 注入、跨站点脚本或任何其他可能危及您的网站和数据的恶意方法的黑客攻击方面发挥着重要作用。

更新于:2022年9月2日

5K+ 次浏览

启动您的 职业生涯

完成课程获得认证

开始
广告
© . All rights reserved.