在Flask中创建/检索Cookie的问题

时间:2018-08-15 17:54:14

标签: python cookies flask

初始化AnonUser类时,代码应检查cookie是否存在,如果不存在,则创建一个新cookie。相关代码段如下:

class AnonUser(object):
    """Anonymous/non-logged in user handling"""
    cookie_name = 'anon_user_v1'

    def __init__(self):
        self.cookie = request.cookies.get(self.cookie_name)
        if self.cookie:
            self.anon_id = verify_cookie(self.cookie)
        else:
            self.anon_id, self.cookie = create_signed_cookie()
            res = make_response()
            res.set_cookie(self.cookie_name, self.cookie)

由于某些原因,request.cookies.get(self.cookie_name)始终返回None。即使我在res.set_cookie之后立即登录“ request.cookies”,该cookie也不会存在。

奇怪的是,此代码可以在具有相同代码且据我所知完全相同的配置设置的另一个分支上工作(我不可能遗漏某些东西,但是我一直在搜索过去的两个小时)没有运气的任何差异)。唯一不同的地方似乎是域。

有人知道为什么会这样吗?

1 个答案:

答案 0 :(得分:0)

我弄清楚了问题所在。对于在其他分支机构上工作,我显然是错的。不管出于何种原因,如果匿名用户已经有一些保存的集合(使用cookie的目的),它都会起作用,但我仍然不确定为什么会这样,但是以下解决了这个问题:

@app.after_request
def set_cookie(response):
    if not request.cookies.get(g.cookie_session.cookie_name):
        response.set_cookie(g.cookie_session.cookie_name, g.cookie_session.cookie)
    return response

我需要做的主要事情是从flask导入“ request”,并意识到我可以通过仅引用设置了它们的匿名用户(“ cookie_session”)类来引用cookie和cookie名称。