gpt4 book ai didi

database - 将 cookie 保存在数据库中(代表用户发出请求)

转载 作者:搜寻专家 更新时间:2023-10-30 20:31:21 25 4
gpt4 key购买 nike

我正在 facebook 上创建一个网络应用程序,允许用户提供第三方网站的登录详细信息,并通过我的应用程序向该服务发出请求。 (即他们在我的应用程序中有一个帐户,在第 ​​3 方网站上有一个帐户。)

这个第三方网站没有 API,所以我使用 URLlib 来执行登录。此外,与这个第 3 方应用程序的所有交互都是通过 Celery 队列进行的,因此我的应用程序的前端与我的应用程序对第​​ 3 方的实际请求之间没有链接

我正在尝试想出最好的方法来管理第三方网站返回的 cookie,这样我就不必在每次操作时都让用户登录。

创建一个将用户映射到 cookie 并将 cookie 序列化到数据库中的表会不会很疯狂?

最佳答案

对于将来遇到这种情况的任何人,我能够通过使用 cookielib(urllib 的一部分)将 cookie 保存在数据库中,并创建我自己的 cookiejar,将 cookie 转储和加载为可以保存在数据库中的字符串:

class StringCookieJar(cookielib.CookieJar):
def __init__(self, cookie_string="", policy=None):
cookielib.CookieJar.__init__(self, policy)
if cookie_string:
self._cookies = pickle.loads(cookie_string)
def dump(self):
return pickle.dumps(self._cookies)

在创建我的连接对象实例时,我使用我的自定义 cookielib 设置了 urllib opener:

self.cookiejar = StringCookieJar(cookie_string=str(self.account.cookies))
self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookiejar))

其中 self.account.cookies 是我用来存储 cookie 字符串的数据库中的字段:

cookies = models.CharField(max_length=2000, blank=True)

关于database - 将 cookie 保存在数据库中(代表用户发出请求),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5871409/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com