如何在 Flask 中获得用户对 cookie 的许可

Att*_*k68 8 cookies flask flask-login

我有一个用 Flask 和 Flask-Login 构建的网站,所以我知道它会在某个时候生成 cookie。但我的问题比这更基本。

Flask 应用程序是否总是立即生成 cookie?

如果没有,是否有任何工具可以让我确定我的应用程序的哪个部分在哪个时间点生成了 cookie,例如是否可以在操作网站时监控 Chrome 开发工具?

这个问题的上下文是 GDPR 合规性,特别是尝试在开始时请求许可(最初没有创建 cookie!)然后当用户点击接受时有一个过程,这意味着用户(匿名或其他)不会看到该许可再次请求横幅(直到本地浏览器缓存清除)

Att*_*k68 10

为了它的价值,我这样做了:

1) 在任何页面 base.html 上强制使用横幅:

{% if cookies_check() %}
        {# then user has already consented so no requirement for consent banner #}
{% else %}
        {# show a cookie consent banner #}
        <div id="cookie-consent-container">
            <button id="cookie-consent">I Consent</button>
        </div>
        <script>
            var fn = function () {
                document.cookie = "cookie_consent=true";
                document.getElementById('cookie-consent-container').hidden = true;
            };
            document.getElementById('cookie-consent').onclick = fn;
        </script>
{% endif %}
Run Code Online (Sandbox Code Playgroud)

2) 将函数注入 jijna2 以检查 cookie:

@app.app_context_processor
def inject_template_scope():
    injections = dict()

    def cookies_check():
        value = request.cookies.get('cookie_consent')
        return value == 'true'
    injections.update(cookies_check=cookies_check)

    return injections
Run Code Online (Sandbox Code Playgroud)

我还使用开发控制台通过探索document.cookies. 最初生成的唯一 cookie 似乎是 Google Analytics。

  • 谢谢你,它有效。但是,它看起来像`@app.app_context_processor` 应该只是`@app.context_processor` (4认同)