1
|
from flask import Flask, session
|
cs |
import 해서 쓴다
1
2
3
|
app.secret_key = 'secretkey'
session.permanent = True
app.permanent_session_lifetime = timedelta(seconds=10)
|
cs |
secret_key를 어렵게 해서 만들어 줘야만 함
session.permanent는 session의 사용시간을 영구적으로 사용할지에 대한 옵션이다
-기본값 False
(그런데 True로 안해주면 lifetime 제어가 안먹히더라)
app.permanent_session_lifetime = timedelta(seconds=10) 은 세션의 사용시간 설정이다
-minuts, hour 등의 옵션이 있다
1
2
3
4
|
if 'username' in session: # session안에 username이 있으면 로그인
return render_template('index_login.html', current_user=session['username'])
session.pop('username', None)
|
cs |
사용하는 걸 보면 알 수 있는 것처럼 List 타입 사용하는 것처럼 쓰면 된다
아마 중복이 되면 안될테니 Set 타입의 컬렉션일 듯하다
session이라 붙여놓고 cookie에 들어오길래 진정한 정체가 뭔지 알 수 없는 이상한 기능이다
(session은 서버에서 저장, cookie는 사용자 브라우저에 저장)
브라우저 개발자 도구를 통해 확인해 보니 GC가 동작하지 않는지, 아니면 느려서 그런지
그도 아니면 그냥 key 값만 남기고 value는 빈문자열인 상태로 메모리에 상주하는지 로그아웃 구현 후에도 계속 남아있다
(어차피 session이라면 브라우저 종료 시 사라지겠지만 개발자도구에 cookie라고 표기 되어있는게 찜찜함)
그래서
1
2
3
4
|
def do_logout():
session.pop('username', None)
app.permanent_session_lifetime = timedelta(seconds=0)
return jsonify({'msg': '세션이 종료 되었습니다!'})
|
cs |
데스노트 조작으로 없애버림
찾아보니 킹택갓버플로우에도 session.permanent와 app.permanent_session_lifetime을 전역으로 사용하지 않고 쿼리마다 사용하라고 응답해주는 글이 있더라
왜 되는건지 모르겠네
'Development > Python' 카테고리의 다른 글
반복문 돌려가며 Dictionarys in Array 로 만들기 (0) | 2022.08.28 |
---|---|
Flask, mongoDb 사용하여 파일 저장 기능 만들기 (0) | 2022.08.28 |
git-bash 서버 환경설정 (ubuntu, python-flask) (0) | 2022.07.24 |
Flask (0) | 2022.07.23 |
python, mongoDb (0) | 2022.07.22 |