在Python脚本中设置Zope CookieCrumbler Cookie

2024-10-06 09:02:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我知道这是一个很老的问题,但我正试图找到一种方法,通过我的python登录脚本,设置CookieCrumbler cookie,在成功登录并访问受限URL时自动发送给用户

我的目标是允许我的python脚本调用zsql方法,并根据用户的帐户类型(数据库中的一列)重定向用户。我现在已经完成了所有工作,但是跨越了两个不同的python脚本。第一个脚本登录用户并重定向到第二个脚本,该脚本调用zsql方法并相应地重定向用户。我希望能够在一个脚本中完成这一切,但如果没有发送cookie,则该用户的用户名不会存储在cookie中,因此zsql方法无法访问

我知道如何在注销时使cookie过期,但当我将其更改为setCookie时,它希望我定义整个cookie,这当然需要CookieCrumbler来完成

我的一个想法是让python以某种方式无形中命中一个安全的URL,并将cookies发送到用户的浏览器,睡眠2秒钟以确保它们通过,然后继续sql操作

另一个选择是我已经提到的,那就是让CookieCrumbler直接将cookies发送到用户的浏览器,而不必尝试访问安全的URL

以下是我现在掌握的代码:

import time
request = container.REQUEST
response = request.response

context.REQUEST.RESPONSE.setCookie('__ac', path='/')
context.REQUEST.RESPONSE.setCookie('__ac_name', path='/')

time.sleep(3)
for user in context.account_data_select():
    if user.account_type == 12 :
        response.redirect("https://secure.mydomain.com/secure/blah")
    else:
        response.redirect("https://secure.mydomain.com/secure")

当然,这不起作用,因为setCookie需要3个变量(名称、值、选项)。我不想手动设置这些。我希望CookieCrumbler完成它的工作,并为用户的浏览器提供适当的cookies

顺便说一句,我使用的是Zope2.13.29,而不是Plone。只是Python 2.7.2中的标准旧Zope


Tags: 方法用户脚本urlcookieresponserequestcontext