繁体   English   中英

Django社交登录:“ AsgiRequest”对象没有属性“会话”

[英]Django Social Login: 'AsgiRequest' object has no attribute 'session'

尝试执行social-app-django(2.1.0)时出错,抛出的错误是:

'AsgiRequest'对象没有属性'session'

  • 使用通道1.1.8,Django 2.0.3,asgi-redis 1.2.0,python 3.6运行
  • 通过python manage.py runserver(开发环境)而不是uwgsi或nginx运行。

尝试访问/ 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”属性/类

解决的办法是将其删除。 它之所以没有将其注销的原因是未知的。

您可以在此处了解更多信息:

SessionAuthenticationMiddleware删除了发行说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM