[英]Django Social Login: 'AsgiRequest' object has no attribute 'session'
尝试执行social-app-django(2.1.0)时出错,抛出的错误是:
'AsgiRequest'对象没有属性'session'
尝试访问/ social / login / google-oauth2 /(使用Google帐户进行身份验证)时发生。
我已经读过有关将MIDDLEWARE_CLASSES更改为MIDDLEWARE的信息,但是一段时间以来我们一直在使用Django> = 1.9,因此它已经被更改了。
追溯如下:
追溯(最近一次通话):
文件“ /lib/python3.6/site-packages/django/core/handlers/exception.py”,第35行,位于内部
响应= get_response(请求)_get_response中的文件“ /lib/python3.6/site-packages/django/core/handlers/base.py”,第128行
响应= self.process_exception_by_middleware(e,请求)在process_exception_by_middleware中,文件“ /lib/python3.6/site-packages/channels/handler.py”,第243行
返回super(AsgiHandler,self)。process_exception_by_middleware(异常,请求)_get_response中的文件“ /lib/python3.6/site-packages/django/core/handlers/base.py”,第126行
响应= wraped_callback(请求,* callback_args,** callback_kwargs)_wrapped_view_func中的文件“ /lib/python3.6/site-packages/django/views/decorators/cache.py”,第44行
响应= view_func(请求,* args,** kwargs)包装中的文件“ /lib/python3.6/site-packages/social_django/utils.py”,第38行
request.social_strategy = load_strategy(请求)在load_strategy中的文件“ /lib/python3.6/site-packages/social_django/utils.py”,第23行
返回get_strategy(STRATEGY,存储,请求)get_strategy中的文件“ /lib/python3.6/site-packages/social_core/utils.py”,行279
返回策略(存储,* args,** kwargs)初始化文件“ /lib/python3.6/site-packages/social_django/strategy.py”,第39行
self.session = request.session,如果请求else {}
AttributeError:'AsgiRequest'对象没有属性'session'
中间件如下(由于其他WsgiRequest没有属性会话而与中间件相关,因此添加了中间件):
MIDDLEWARE = [
"django.contrib.sessions.middleware.SessionMiddleware",
"django.contrib.auth.middleware.AuthenticationMiddleware",
"django.contrib.auth.middleware.SessionAuthenticationMiddleware",
"django.contrib.messages.middleware.MessageMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.csrf.CsrfViewMiddleware",
"django.middleware.security.SecurityMiddleware",
"social_django.middleware.SocialAuthExceptionMiddleware",
"django.middleware.cache.UpdateCacheMiddleware",
"django.middleware.common.CommonMiddleware",
"django.middleware.cache.FetchFromCacheMiddleware",
]
问题出在中间件上。 我从Django> = 1.9升级到了2.0.3。 SessionAuthenticationMiddleware已删除。 在调试中间件时,我发现了这一点:
ImportError:模块“ django.contrib.auth.middleware”未定义“ SessionAuthenticationMiddleware”属性/类
解决的办法是将其删除。 它之所以没有将其注销的原因是未知的。
您可以在此处了解更多信息:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.