2015-01-04 109 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 

但你可以与其他信息进行扩展。