django - 禁用Django中的 session 创建

标签 django session

我想对某些URL禁用Django中的自动 session 创建。我有/ api / *,每个点击的客户端都会获得一个新的Django session 。有没有办法忽略某些网址?

最佳答案

一个简单的解决方案是让您的Web服务器区分API调用和常规调用,然后使应用程序具有两个不同的WSGI实例:一个启用了 session ,另一个禁用了 session 。 (使用Nginx可能比使用Apache容易得多。)

一种替代方法是继承SessionMiddleware,然后编辑流程函数以忽略所有符合您条件的请求。就像是:

from django.contrib.sessions.middleware import SessionMiddleware

class MySessionMiddleware(SessionMiddleware):
    def process_request(self, request):
        if request.path_info[0:5] == '/api/':
            return
        super(MySessionMiddleware, self).process_request(request)

    def process_response(self, request, response):
        if request.path_info[0:5] == '/api/':
            return response
        return super(MySessionMiddleware, self).process_response(request, response)

然后编辑设置的文件,以使MIDDLEWARE_CLASSES包含“MySessionMiddleware”的路径,而不是“django.contrib.sessions.middleware.SessionMiddleware”的路径。

关于django - 禁用Django中的 session 创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4052473/

相关文章:

php - 在 laravel API 中使用 session

javascript - 在外部 JavaScript 文件中调用 session 变量

sql - 使用 Django ORM 根据最大​​值获取单个子行

jsp - 如何从 servlet 设置 JSP UseBean 值

Django TastyPie 正确放置嵌套用户模型

Django 索引 url 禁用 api url

asp.net - 表单例份验证不应该超时?

python - Flask session 不持久

python - Django: request.META ['REMOTE_ADDR' ] 总是 '127.0.0.1'

django - 如何翻译应用程序模板