2015-10-23 59 views
0

我正在Django開發一個網站,我希望當用戶點擊登錄按鈕時,它都會在我的網站和ide.cigiden.cl中驗證他。 我的網站使用django-registration-redux正常工作,但外部驗證不是。Django Python登錄到外部網站,ajax或urlllib

我知道ide.cigiden.cl的憑據,這對我來說不是問題。但我需要知道如何去做。我在本網站嘗試了很多答案,包括urllib,urllib2等。 我現在正在與ide.cigiden.cl的開發人員聯繫,他在Django做了這個。所以我實際上可以讓他在views.py或其他文件中編寫一些代碼來幫助我進行身份驗證。

的網址,讓您登錄是ide.cigiden.cl/account/login/ 他還告訴我,也許有ide.cigiden.cl/account/ajax_login努力可能會奏效。

在他的項目的文件views.py他有下面的代碼:

def ajax_login(request): 
    if request.method != 'POST': 
     return HttpResponse(
      content="ajax login requires HTTP POST", 
      status=405, 
      mimetype="text/plain" 
     ) 
    form = AjaxLoginForm(data=request.POST) 
    if form.is_valid(): 
     username = form.cleaned_data['username'] 
     password = form.cleaned_data['password'] 
     user = authenticate(username=username, password=password) 
     if user is None or not user.is_active: 
      return HttpResponse(
      content="bad credentials or disabled user", 
      status=400, 
      mimetype="text/plain" 
     ) 
     else: 
      login(request, user) 
      if request.session.test_cookie_worked(): 
       request.session.delete_test_cookie() 
     return HttpResponse(
      content="successful login", 
      status=200, 
      mimetype="text/plain" 
     ) 
    else: 
    return HttpResponse(
     "The form you submitted doesn't look like a username/password combo.", 
     mimetype="text/plain", 
     status=400) 

就是這樣。我將非常感謝一些幫助! 我不擅長JavaScript,所以如果我可以使用python來完成它,那就太棒了。

回答

0

這是我會怎麼做:

  1. 用戶點擊登錄
  2. 驗證了他在網站上
  3. 重定向他唯一令牌
  4. 到ide.cigiden.cl(使用JS)
  5. 上ide.cigiden.cl自動驗證用戶
  6. 重定向到你的網站

備註

當用戶通過身份驗證時,會在其瀏覽器中設置cookie。當用戶點擊您網站上的登錄按鈕時,他將在您的網站上進行身份驗證,並且只有您網站的Cookie將保存在他的瀏覽器中。他還需要ide.cigiden.cl中的身份驗證cookie在那裏進行身份驗證。這就是爲什麼你需要重定向。