2013-01-17 3 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

과거에 만료 된 쿠키를 설정해야합니다.

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

그런데 실제로 사용자 이름 쿠키가 안전하다고 기대하지 않기를 바랍니다. 왜냐하면 아니야. 사용자는 그가 원하는 모든 것을 넣을 수 있습니다. 해결책은 대개 사용자가 수정할 수없는 서명 된 쿠키를 사용하는 Flask 세션을 사용하는 것입니다.

+0

흠, 알았습니다. 나는 그들이 안전하지 않다는 것을 안다.하지만 다른 서비스로 서명 된 쿠키를 읽는 방법을 알아 내려고하지 않았다. (나는 술병이 node.js 앱과 이야기하고있다.) – Oliver

관련 문제