2015-01-04 160 views
1

我正在爲我的前端創建一個使用backbone.js的應用程序,並且爲我的後端創建了一個使用django-rest-framework的應用程序。我希望能夠註冊用戶,登錄和註銷用戶,並檢查用戶是否使用骨幹網登錄。Backbone.js和Django Rest框架註冊和身份驗證

我瞭解django身份驗證如何工作以及drf如何使用身份驗證,但我不知道如何將其綁定到主幹。

任何人都可以指向正確的方向嗎?

+1

你是什麼意思「把它綁在骨幹「?你可以在javascript和'request.is_authenticated'中訪問'request.user'。 – alejoss

+1

我認爲這是「不知道要問什麼」的問題之一。如果我有一個骨幹模型,基於像'urlRoot:/ model'這樣的drf端點,我可以調用.save將其發佈到drf,或者.delete將其刪除,但是它不像那個用戶對嗎?骨幹視圖如何註冊用戶或登錄用戶?感謝您的建議,但我會繼續關注這一點。 – grez

+1

我從來沒有使用骨幹註冊用戶或登錄他們。我認爲你想要的只是與'request.user'交互。但是,我認爲利用Django身份驗證系統並將Backbone用於其他交互是明智的。 – alejoss

回答

1

如果您的所有應用只能通過用戶密碼訪問,請使用Django的身份驗證系統https://docs.djangoproject.com/en/1.7/topics/auth/default/#django.contrib.auth.views.login。使所有的觀點@login_required。

現在如果你想通過Ajax調用來記錄他們在,創建一個視圖如下:

from django.contrib.auth import authenticate 
from django.views.decorators.csrf import csrf_exempt 

@csrf_exempt 
def login_ajax(request): 
    data = json.loads(request.body.decode("utf-8")) 
    user = authenticate(username=data['user'], password=data['pass']) 
    if user:  
     return HttpResponse("OK") 
    else: 
     return HttpResponse("Error", status=401) 

後來,你的JS您的模板:

$.post(/* url where you mapped the login_ajax view */, { user: "John", pass: "abc123" }) 
.done(function(data) { alert("User logged in: " + data);}) 
.fail(function(data) { alert("User not logged in: " + data);}); 
0

我在使用django-rest-auth和AngularJS。它爲您提供一組REST API端點來處理用戶註冊和身份驗證任務,並與django-rest-frameworkdjango-allauth完美集成。

要獲取用戶的信息,你需要調用這個API:

.../rest-auth/user/ 

默認情況下的反應是:

username 
first_name 
last_name 
email 

但你可以與其他信息進行擴展。