django - 使用 Django 管理应用程序并禁用会话中间件?
问题描述
我正在为我们的用户构建一个依赖 JWT(或基于令牌 - https://www.django-rest-framework.org/api-guide/authentication/#tokenauthentication)身份验证的 API 的 django 服务器。
出于任何目的,我不需要基于会话的身份验证。它会在每个请求上创建一个不必要的查询,并在我不想对用户进行身份验证时对用户进行身份验证(我希望浏览器仅在请求中包含 Authentication 标头时进行身份验证,否则保持 AnnonymousUser 。这是因为它会产生问题在我的一些中间件中,我验证我是在与访客还是经过身份验证的用户打交道)。
但是,当我也尝试使用管理应用程序时,问题就出现了(我无法想象在不使用 django 管理页面的情况下构建这个应用程序)。当我从我的设置文件中删除与会话相关的中间件:(django.contrib.sessions.middleware.SessionMiddleware, django.contrib.auth.middleware.AuthenticationMiddleware and django.contrib.messages.middleware.MessageMiddleware
)时,我在执行运行服务器时收到以下错误:
ERRORS:
?: (admin.E408) 'django.contrib.auth.middleware.AuthenticationMiddleware' must be in MIDDLEWARE in order to use the admin application.
?: (admin.E409) 'django.contrib.messages.middleware.MessageMiddleware' must be in MIDDLEWARE in order to use the admin application.
?: (admin.E410) 'django.contrib.sessions.middleware.SessionMiddleware' must be in MIDDLEWARE in order to use the admin application.
有人可以想到一种解决方法,我可以在 Django 中禁用会话,同时还可以使用管理面板?我想到的一个解决方案是将授权标头添加到每个管理页面请求中,但是 1)我不知道如何继续这个想法和 2)(更重要的是),我无法在禁用会话中间件时执行运行服务器.
解决方案
推荐阅读
- javascript - 猫头鹰旋转木马拇指高度未定义
- android - 当应用程序从后台终止时,Firebase 云消息传递不起作用
- javascript - 如何处理 Web 应用程序中的 Web 套接字(Socket IO)错误?
- c# - 如何使用 string.Substring(char, char) 而不是 string.Substring(int, int)?
- pyspark - 使用 Pyspark 从 XML 中的 Json 元素创建新的 Dataframe
- ssh - 连接 Mulesoft 和 Aurora RDS
- asp.net-mvc - 如何将 Postman 的请求发送到 ASP.Net MVC 中的函数?
- php - 我的数组里面有 5 个数组,我需要一个 foreach 循环来从主题打印一个?
- facebook - 我们如何从图形 API 获取关注者数据/详细信息?
- stripe-payments - 如何获取 PaymentIntent next_action.type = redirect_to_url 而不是 use_stripe_sdk 进行订阅