通过Django休息框架登录用户

时间:2017-08-02 07:45:59

标签: django django-rest-framework

我尝试通过DRF视图登录用户。

@list_route(methods=['post'])
def login(self, request, *args, **kwargs):

    login_form = LoginForm(request, data=request.data or None)

    if login_form.is_valid():
        _login(request._request, login_form.get_user())
    else:
        raise forms.ValidationError("login wrong")
    return Response({})

上面的代码毫无例外地运行,但它似乎并没有真正登录用户。

当我刷新浏览器时,用户仍然没有登录。

如何登录用户?

2 个答案:

答案 0 :(得分:2)

请不要使用DRF通过会话记录人员。

SessionAuthentication之后的几行警告会为您提供更多详细信息。

答案 1 :(得分:1)

似乎_login()方法没有达到预期效果。

正如你在评论中提到的那样。你正在使用:

from django.contrib.auth.views import login as _login

但是这个方法:

  

显示登录表单并处理登录操作。

你应该(就像你一样)使用:

from django.contrib.auth import login as _login

其中:

  

在请求中保留用户ID和后端。这样用户就不会这样做     必须在每个请求上重新进行身份验证。
注意数据集期间     用户登录时将保留匿名会话。