我在会话认证方面遇到了很奇怪的问题。
我在某些旧式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
标头,这使浏览器可以设置sessionid
和csrftoken
cookie。而且大多数时候效果都很好。
但很少有一些用户遇到登录失败。我无法复制它,但这就是他们所描述的:
login/complete
。我不知道这种情况是怎么发生的,对于如此小的如此之少的用户来说,这是很少。我想念什么吗?
感谢帮助。
=============== 添加更多信息。
我深入研究了这个问题,发现用户的会话无法解码。
session.get_decoded() for session in Session.objects.all()
返回Session data corrupted
错误。与登录失败有关吗?