簡體   English   中英

如何將查詢參數添加到django-allauth LOGIN_REDIRECT_URL?

[英]How to add query parameters to django-allauth LOGIN_REDIRECT_URL?

  1. 我的JS文件嵌入在第三方頁面上
  2. JS文件使用jsonp請求與服務器對話,該請求返回一個值,該值存儲在變量x
  3. 現在我想驗證此用戶,但要正確進行驗證(為了使我的應用程序邏輯正常工作),我需要存儲在特定於第三方頁面的JS內的x
  4. 我通過allauth使用Facebook登錄

window.open("http://localhost:8000/accounts/facebook/login/?method=oauth2", "AskAFriend Facebook Login","menubar=0,toolbar=0;scrollbars=0;dialog=0;resizable=1,width=480px,height=320px");

  1. 上面的代碼為Facebook登錄過程打開了一個新窗口,完成后重定向到我在django應用中設計的視圖,我通過在settings.py中的LOGIN_REDIRECT_URL設置中提供該視圖的網址來實現此目的

  2. 現在, 我需要一種方法來向此請求添加參數,該參數可以在登錄完成后到達我的視圖,我該如何實現?

  3. 我已經嘗試將其添加到我在JS中使用的URL中,例如window.open("http://localhost:8000/accounts/facebook/login/?method=oauth2&*valueofx=' + x* ... (不是)工作)(忽略*)

  4. 我已經閱讀了有關使用自定義適配器覆蓋get_login_redirect_url()函數的信息,但我無法弄清楚如何針對我的特定情況

您可以將LOGIN_REDIRECT_URL更改為/redirect而這又將是一個“中間”視圖,用於控制用戶重定向到的位置。

該視圖可能看起來像這樣(未經測試):

from django.views.generic import View
from django.http import HttpResponseRedirect

class LoginRedirectIntermediary(View):
    """
    Decides where a newly logged in user should go based on the request.
    """
    def get(self, request, *args, **kwargs):
        if request.user.is_superuser:
            url = '/admin-panel/{}/'
        else:
            url = '/user-panel/{}/'

        return HttpResponseRedirect(url.format(request.user.username))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM