使用django python重定向后会话值丢失
我正在使用python-social-auth来使用facebook进行身份验证,并且正在使用django项目。 我正在本地主机上运行django服务器,并将我的应用程序设置为使用Facebook重定向到http://127.0.0.1:8000/complete/facebook/,该文件开始python-social-auth的管道以验证用户身份。 我使用postgres作为我的数据库。
当调用此方法并尝试进行身份验证时,它无法在会话中查找信息。 从https://github.com/omab/python-social-auth/issues/534,我认为会话cookie被覆盖。 如果我将Facebook重定向发送到其他网址以加载静态网页而不进行身份验证,则不会发生错误,但我也不会从Facebook验证身份或获取任何信息。
我怎样才能避免覆盖sessionid cookie - 当然,这是真正的问题 - 或者还有另一个问题,我可能会在这里失踪?
[03/Jun/2016 05:19:58] "GET /login/facebook/?next=/lithium-web/ HTTP/1.1" 302 0
Internal Server Error: /complete/facebook/
Traceback (most recent call last):
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 149, in get_response
response = self.process_exception_by_middleware(e, request)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/core/handlers/base.py", line 147, in get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/django/views/decorators/csrf.py", line 58, in wrapped_view
return view_func(*args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/apps/django_app/utils.py", line 51, in wrapper
return func(request, backend, *args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/apps/django_app/views.py", line 28, in complete
redirect_name=REDIRECT_FIELD_NAME, *args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/actions.py", line 43, in do_complete
user = backend.complete(user=user, *args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/backends/base.py", line 41, in complete
return self.auth_complete(*args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/utils.py", line 229, in wrapper
return func(*args, **kwargs)
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/backends/facebook.py", line 71, in auth_complete
state = self.validate_state()
File "/Users/mac/Desktop/lithium-web/lib/python2.7/site-packages/social/backends/oauth.py", line 88, in validate_state
raise AuthStateMissing(self, 'state')
AuthStateMissing: Session value state missing.
此错误是由于会话cookie未保存在非https网址上。 当在django中将SESSION_COOKIE_SECURE设置为True时在本地主机上进行测试时,会话cookie不会在重定向之间持续存在,并且您将在任何会检查会话的页面更改中收到此错误。
SESSION_COOKIE_SECURE =虚假进行测试,这很好
通过从django设置中删除LOGIN_REDIRECT_URL
来解决它。
实际上,python_social_auth管道结构将LOGIN_REDIRECT_URL
设置为next
即重定向到url,但不幸的是它们没有处理命名模式。 所以,当我们将LOGIN_REDIRECT_URL
设置为myapp:index
它会产生这个错误。
所以,要么删除这个设置,要么使用直接模式即
LOGIN_REDIRECT_URL
= myapp/index
上一篇: Session value missing after redirect with django python
下一篇: oauth