2012-12-25 3 views
0

그래서 추천 URL을 가지고 있는데, http://.../ref/4Q3j9/과 같은 것을 클릭하면 가입 페이지로 이동합니다. 그들은 Google 계정 [Oauth2]을 사용하여 가입 할 수 있습니다. 템플릿에 숨겨진 변수로 저장합니다. 그러나 사용자가 Google 로그인을 클릭하면 해당 값이 손실됩니다. 어쨌든 매개 변수를 전달한 다음 social_auth의 리디렉션으로 다시 돌아갈 수 있습니까? 나는 파이프 라인을 사용하는 것을 생각했지만, 로그인 프로세스 후에 만, 그때까지 나는 그 매개 변수를 잃어 버렸다.django social_auth 추가 인수 전달

+1

왜 세션을 사용하지 않는가? 변수를 저장하기 위해 leware? https://docs.djangoproject.com/en/dev/topics/http/sessions/ – ppetrid

답변

0

이것은 약간 까다 롭습니다. 세션에 저장하는 것은 장고가 로그인 할 때 세션을 지우기 때문에 충분하지 않습니다. 사용자가 가입 페이지로 보내 졌을 때 세션에 저장할 수 있지만, 파이프 라인 엔트리는 user.referral = request.session['referral']과 같은 것을 수행 한 다음 django-social-auth에 의해 수행 된 리디렉션이 사용자에게 전송되기 전에 request.user.referral을 확인하는 미들웨어를 사용하여 세션에 다시 저장합니다 (인증이 완료되고 사용자가 로그인 한 경우) .

GOOGLE_OAUTH2_AUTH_EXTRA_ARGUMNTS = {'referral': None}을 정의하고 Google OAuth2 링크에 ?referral=foobar이 추가되도록 할 수 있습니다. 하지만 그건 단지 참조 세션의 첫 번째 세션 저장을 피할 것이고, 파이프 라인 (하지만 이번에는 세션 대신 request.GET['referral']을 확인해야합니다) 항목과 미들웨어가 필요합니다. 인증이 완료되면 Google이 추천을 돌려 줄 것인지 확신 할 수 없습니다 .

0

오래된 질문이지만 답이 그대로 ... 나는이

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]