2013-01-17 7 views
16

私はコードでクッキーを設定するには、ドキュメントで提案:フラスコ:クッキーを取り除くには?

from flask import make_response 

@app.route('/') 
def index(): 
    resp = make_response(render_template(...)) 
    resp.set_cookie('username', 'the username') 
    return resp 

しかし、どのように私はそれらを削除しますか? remove_cookieメソッドはありません。私は試しました:

if request.cookies.get('sessionID'); 
    request.cookies.pop('sessionID', None) 

しかし、request.cookiesオブジェクトは不変です。私は何をしますか?

答えて

30

クッキーを削除するHTTPヘッダーはありません。伝統的には、クッキーを過去の有効期限付きのダミー値に設定するだけで、すぐに期限切れになります。

resp.set_cookie('sessionID', '', expires=0) 

これは、過去にほぼ確実であるunixtime 0で期限が切れる空の文字列にセッションIDクッキーを設定します。

+0

ThiefMasterの答えを考えれば、これは必要ですか? – Oliver

+0

クッキーは存在する可能性がありますが、まだ空です。 'expires'を使って実際に削除します。違いはかなり小さいです、はい。 – Eevee

+0

その場合は、あなたの答えが正しいと思います。 – Oliver

6

過去に有効期限が切れているCookieを設定する必要があります。

resp = make_response(render_template(...)) 
resp.set_cookie('username', expires=0) 
return resp 

ところで、実際にはユーザー名のクッキーが安全であるとは思わないことを願っています。それはないからです。ユーザーは彼が望むものをそこに置くことができます。一般的には、ユーザーが変更できない署名済みのCookieを使用するFlaskセッションを使用します。

+0

ええ、大丈夫です。私は彼らが安全ではないことを知っていますが、私は別のサービスで署名されたクッキーを読む方法を知りませんでした(私はFlaskがnode.jsアプリケーションと話しています) – Oliver

関連する問題