django social_auth传递额外的论点

时间:2012-12-25 19:44:49

标签: django authentication django-socialauth

所以我有一个引荐网址,类似http://.../ref/4Q3j9/,点击后会将它们带到注册页面。他们可以使用谷歌帐户[Oauth2]注册。我将它们作为隐藏变量存储在模板中。但是,当用户点击Google登录时,我会丢失这些值。无论如何,我可以传递这些参数,然后再次返回social_auth中的重定向。我想过使用管道,但只有在登录过程之后才会这样,那时我就失去了这些参数。

2 个答案:

答案 0 :(得分:0)

这有点棘手,在会话中存储它是不够的,因为当用户登录时django会清除会话。当用户被发送到你的注册页面时你可以将它存储在会话中,但是你需要一个管道执行类似user.referral = request.session['referral']之类的条目,然后使用中间件将其存储回会话,该中间件在django-social-auth完成重定向之前检查request.user.referral(当auth完成时)并且用户已登录。)

您可以尝试定义GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMNTS = {'referral': None}并确保Google OAuth2链接添加了?referral=foobar。但这只会避免第一次会话存储引用,你需要管道(但这次检查request.GET['referral']而不是会话)条目和中间件,我不确定谷歌会返回推荐当auth完成时。

答案 1 :(得分:0)

一个老问题,但由于没有答案......我使用cookies做了这个,在视图函数中设置了一个cookie

response.set_cookie( cookie_name, my_needed_value, max_age=3600)

或在

的网页中
document.cookie = 'cookie_name=my_needed_value; expires=Tue, 05 Nov 2014 00:00:00 UTC; path=/'

(设置明确过期,或删除过去的日期),然后在视图中阅读

if request.COOKIES.has_key(cookie_name):
        my_needed_value = request.COOKIES[cookie_name]