我尝试通过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({})
上面的代码毫无例外地运行,但它似乎并没有真正登录用户。
当我刷新浏览器时,用户仍然没有登录。
如何登录用户?
答案 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和后端。这样用户就不会这样做 必须在每个请求上重新进行身份验证。
注意数据集期间 用户登录时将保留匿名会话。