django-rest-framework快速入门:登录其API

时间:2014-02-14 10:13:07

标签: django django-rest-framework

我已经设置了django-rest-framework及其基本用户/组api,如下所述:http://www.django-rest-framework.org/。虽然我可以通过api看到用户和组,但我无法登录。有/ api-auth /登录页面,每当我插入un& passwd并提交它只是重定向到同一页面,没有任何renderred消息。我想知道我错过了什么。如何“登录”API。

2 个答案:

答案 0 :(得分:1)

Django rest框架支持不同的身份验证方法。不确定你的意思/ api-auth /。这个框架中没有这样的标准网址。请检查documentation以查看可能的身份验证方法以及操作方法。

答案 1 :(得分:0)

这是由我使用自定义身份验证后端引起的:

# settings.py
AUTHENTICATION_BACKENDS = (
    'web.auth_backends.EmailAuthBackend',
)

# auth_backends.py
class EmailAuthBackend(object):
    def authenticate(self, email=None, password=None):
        try:
            user = User.objects.get(email__iexact=email)
            if user.check_password(password):
                return user
        except User.DoesNotExist:
            return None

    def get_user(self, user_id):
        try:
            return User.objects.get(pk=user_id)
        except User.DoesNotExist:
            return None

基本上它传递的是关键字“用户名”,但它接受了“电子邮件”。所以它引发了一个异常,它被django的contrib.auth.authentificate捕获,用户无法登录。我通过用“email”代替“username”来解决它。