如何在Django中创建sessionlocal cookieaware HTTP客户端?

2024-04-19 07:39:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用一个web服务后端来为Django提供身份验证,get_user方法必须保留web服务提供的cookie才能与会话相关联。现在,我只通过调用urllib2.urlopen(myTargetService)进行远程调用,但这不会传递当前会话的cookie。在

我创建了一个会话访问中间件来将会话存储在设置中:

class SessionAccessMiddleware:

  def process_request(self, request):
    settings.current_session = request.session

因此,我可以在get_request和post_request中访问请求会话,但是我不知道如何让urllib2以特定于会话的方式记住我的cookies。在

我该怎么做?在


Tags: 中间件django方法身份验证webget远程cookie
1条回答
网友
1楼 · 发布于 2024-04-19 07:39:18

这里:http://docs.python.org/library/cookielib.html#examples是您尝试使用urllib2cookielib执行的操作的示例。因此,根据需要创建cookielib.CookieJar的文档,使用正确的数据(来自会话)设置cookie,构建一个使用您的CookieJar的{},并使用它来获取{}。在

如果中间件代码中的settings意味着from django.conf import settings,这不是个好主意。在http://github.com/svetlyak40wt/django-globals/中,您可以安全地存储请求范围内的数据,以便从request对象不可访问的地方进行访问。另外,编写自定义身份验证后端并将其与django.contrib.auth一起使用可能是个好主意,而不是从头开始创建自己的身份验证系统,这里将介绍http://docs.djangoproject.com/en/dev/topics/auth/#writing-an-authentication-backend。在

相关问题 更多 >