Django会话身份验证有时会失败

时间:2018-07-30 17:35:33

标签: django session cookies django-rest-framework session-cookies

我在会话认证方面遇到了很奇怪的问题。

我在某些旧式django视图上通过DRF API使用会话身份验证。并使用DRF和react app实现登录过程。 用于登录的服务器代码如下:

class AuthViewSet(viewsets.ViewSet):

    def create(self, request, *args, **kwargs):
    is_session_auth = request.data.get('session_auth', False)

    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    token = serializer.save()

    if is_session_auth is True:
        login(request, token.user)

    return Response(dict(token=token.key))

因此,据我所料,响应应该具有set-cookie标头,这使浏览器可以设置sessionidcsrftoken cookie。而且大多数时候效果都很好。

但很少有一些用户遇到登录失败。我无法复制它,但这就是他们所描述的:

  1. 用户提交登录表单后,请求将发送到服务器并成功获得响应。
  2. 然后,按预期将javascript应用程序将URL推送到login/complete
  3. 但是在登录完成视图中,请求未能通过身份验证。然后将视图重定向请求还原到原始登录视图。
  4. 用户重试登录,但结果相同。

我不知道这种情况是怎么发生的,对于如此小的如此之少的用户来说,这是很少。我想念什么吗?

感谢帮助。

=============== 添加更多信息。

我深入研究了这个问题,发现用户的会话无法解码。 session.get_decoded() for session in Session.objects.all()返回Session data corrupted错误。与登录失败有关吗?

0 个答案:

没有答案