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

时间:2018-08-20 12:00:34

标签: cookies flask flask-login

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

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

如果没有,是否有任何工具可以让我识别应用程序的哪个部分在什么时候生成了cookie,例如,在操作网站时是否可以监视Chrome Dev工具?

此问题的上下文是GDPR合规性,尤其是尝试一开始就请求权限(最初没有创建cookie!),然后当用户单击“接受”时,该过程就意味着该用户(匿名或其他)不会再次看到该权限请求标语(直到清除本地浏览器缓存)

1 个答案:

答案 0 :(得分:1)

我为此做了什么:

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 %}

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

我还使用开发控制台通过浏览document.cookies来检测现有的cookie。似乎最初生成的唯一Cookie是Google Analytics(分析)。