将 python-social-auth 从 0.1.17 升级到 0.2.4 时,请求中未提供会话属性,以自定义管道方法?
On upgrading python-social-auth from 0.1.17 to 0.2.4, session attribute is not provided in request, to custom pipeline method?
我的社交认证管道如下:
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
'useraccounts.models.create_user_profile'
)
当 'useraccounts.models.create_user_profile' 执行以下操作时:
request = kwargs.get('request')
do_something(session_key=request.session.session_key)
出现以下错误:
'QueryDict' object has no attribute 'session'
'Request' 字典包含具有以下键的元素:state、code、prompt、session_state、authuser
我使用的是 Django 版本 1.5.5。问题来了,因为我已经将 python-social-auth 从 v0.1.17 升级到 v0.2.4
这可能是因为 user_details 函数没有将任何内容传递给管道中的下一个函数。根据您的要求,您可能需要更改管道中函数的顺序:
检查这个:
https://github.com/omab/python-social-auth/blob/master/social/pipeline/user.py#L75
https://github.com/omab/python-social-auth/issues/978
尝试使用
strategy.request
访问 django 请求。
我的社交认证管道如下:
SOCIAL_AUTH_PIPELINE = (
'social.pipeline.social_auth.social_details',
'social.pipeline.social_auth.social_uid',
'social.pipeline.social_auth.auth_allowed',
'social.pipeline.social_auth.social_user',
'social.pipeline.user.get_username',
'social.pipeline.social_auth.associate_by_email',
'social.pipeline.user.create_user',
'social.pipeline.social_auth.associate_user',
'social.pipeline.social_auth.load_extra_data',
'social.pipeline.user.user_details',
'useraccounts.models.create_user_profile'
)
当 'useraccounts.models.create_user_profile' 执行以下操作时:
request = kwargs.get('request')
do_something(session_key=request.session.session_key)
出现以下错误:
'QueryDict' object has no attribute 'session'
'Request' 字典包含具有以下键的元素:state、code、prompt、session_state、authuser
我使用的是 Django 版本 1.5.5。问题来了,因为我已经将 python-social-auth 从 v0.1.17 升级到 v0.2.4
这可能是因为 user_details 函数没有将任何内容传递给管道中的下一个函数。根据您的要求,您可能需要更改管道中函数的顺序:
检查这个: https://github.com/omab/python-social-auth/blob/master/social/pipeline/user.py#L75
https://github.com/omab/python-social-auth/issues/978
尝试使用
strategy.request
访问 django 请求。