django - Django会话身份验证有时会失败
问题描述
我在会话身份验证方面遇到了非常奇怪的问题。
我在 DRF API 上对一些遗留的 django 视图使用会话身份验证。并使用 DRF 和 react 应用程序实现登录过程。登录的服务器代码如下所示:
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的标题。它在大多数情况下都运行良好。
但很少有一些用户遇到登录失败的情况。我无法重现它,但这就是他们所描述的:
- 当用户提交登录表单时,请求发送到服务器并成功得到响应。
- 然后 javascript 应用程序将 url 推送到
login/complete
,如预期的那样。 - 但在登录完整视图中,请求未能通过身份验证。并且视图将请求重定向到原始登录视图。
- 用户重试登录,但得到相同的结果。
我不知道这发生在这么少的用户身上是怎么发生的。我错过了什么吗?
感谢帮助。
============== 添加更多信息。
我深入研究了这个问题,发现用户的会话不可解码。
session.get_decoded() for session in Session.objects.all()
返回Session data corrupted
错误。与登录失败有关吗?
解决方案
推荐阅读
- java - 如何在JPA中使用标准构建器离开一对多关系以获取子表的计数
- node.js - 电子集饼干
- python - 如何处理熊猫数据框中特定长度序列中的缺失值?
- qr-code - 生成没有谷歌 URL GET 请求的二维码
- ios - 如何根据 ios 中的集合视图行数使滚动视图增长?
- geolocation - Sitecore 8.2 GeoIP 服务
- reference - 是否可以为具有相同内部内容的实现实例返回“true”的特征引用实现“PartialEq”?
- c# - 使用 protobuf-net 反序列化 int& 类型
- git - 以编程方式阻止 git push?
- electron - 使用电子生成器嵌入/打包 mongodb