我正在使用一个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。在
我该怎么做?在
这里:http://docs.python.org/library/cookielib.html#examples是您尝试使用},并使用它来获取{}。在
urllib2
和cookielib
执行的操作的示例。因此,根据需要创建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。在相关问题 更多 >
编程相关推荐