Skip to main content
 首页 » 编程设计

python之手动签名 cookie 上的 Django get_signed_cookie

2025年05月04日23落叶无声

我在我的一个 View 中使用了 get_signed_cookie,并且它有效。问题在于测试它,我在我的测试中使用 Django 的 django.core.signing 模块手动签署我的 cookie 与我的实际代码相同的盐(我使用的是我的盐设置)。

当我进行非自动化测试时,一切都很好。我将测试中设置的 cookie 与 Django 本身设置的 cookie 进行了比较,它们的结构相同:

在我的测试中(我在我的测试中手动签署字符串“test_cookie_value”):

{'my_cookie': 'test_cookie_value:s5SA5skGmc4As-Weyia6Tlwq_V8'}

Django :

{'my_cookie': 'zTmwe4ATUEtEEAVs:1YRl0a:Lg3KHfpL93HoUijkZlNphZNURu4'}

但是当我的 View 尝试 get_signed_cookie("my_cookie", False, salt="my_salt") 时,返回 False。

我觉得这很奇怪,虽然我试图服从测试山羊(这里是第一次 TDD'er),但我很想跳过这个测试..

我希望有人能给我一些指导,我现在无法忽略背景中的山羊噪音。

请您参考如下方法:

我找到了我的解决方案。实际上这很简单。

我尝试根据我的测试请求设置我的 cookie,这是有道理的,因为 cookie 应该在请求中发送。一种更好的测试方法是先GET 一个资源(设置 cookie,这在正常的网络情况下也会发生),然后 POST设置 cookie。这很好用。