0

根据此链接: http: //www.django-rest-framework.org/tutorial/4-authentication-and-permissions/#adding-login-to-the-browsable-api

我需要将以下代码添加到我的 URLs.py:

url(r'^api-auth/', include('rest_framework.urls',
                               namespace='rest_framework')),

当我添加这个时,用户可以通过转到“api-auth” URL 并使用默认的 DjangoRestFramework 登录界面登录。成功登录后,用户被定向到“/test”,因为我的 settings.py 中有以下代码:

LOGIN_REDIRECT_URL = '/test'

我希望用户能够使用我自己的自定义界面登录,但使用 DjangoRestFramework 的内置代码来登录用户,所以我创建了自己的模板。模板中的登录表单向

api-auth/login/

并将用户对象(在 JS 中由用户名和密码组成)与 POST 请求一起发送。没有返回错误,所以我假设登录成功。但是,它不会重定向到任何 URL(我希望它重定向到“/test”)。

知道为什么它不会重定向到任何地方,以及如何让它重定向到“/test”吗?

编辑:我也在前端使用 AngularJS。

4

1 回答 1

2

LOGIN_REDIRECT_URL基本上来自django.contrib.auth所以我不会除了其他身份验证后端来使用它,至少不一定/自动

此外,如果您从 AngularJS 通过 REST 登录,即使在 REST API 登录成功并返回重定向响应之后,也不能保证 AngularJS 应用程序将导航到该页面,因为登录 REST API 是使用XHR 请求(来自$http$resource其他)

我正在使用与您稍有不同的 REST 身份验证库,称为django-rest-auth(不是 DRF 附带的 BrowsableAPI),我正在从 AngularJS 进行身份验证,并且在成功完成调用后,我只需将应用程序导航到新 URL

djangoAuth.login(username, password).then(function(){
    // make angularJS navigate to new page when login is successful
    // $location.path(...) or some other way
});

底线是,由于您有一个身份验证 API,您可以制作一个带有登录表单的小型 AngularJS 页面,然后在登录成功时使用 AngularJS 重定向

值得一看

我正在使用这两个旨在一起使用的库,它们通过 DRF 提供 REST 身份验证,以及可选的 AngularJS 库来帮助前端

于 2015-09-22T16:51:30.830 回答