세션(session) 객체는 사용자에 대한 특정 정보를 저장하는데 사용할 수 있습니다. 쿠키를 사용하여 구현되며 암호로 서명하기 때문에 쿠키의 내용을 수정할 수 없습니다. 이 세션을 사용하여 로그인된 아이디를 저장하는 것을 구현해봅니다.
Flask의 Quickstart 문서를 보며 진행한 과정을 작성한 글입니다.
https://flask.palletsprojects.com/en/2.0.x/quickstart/
부족한 부분이나 이상한 부분이 있을 수 있습니다.
개발 환경 구축은 다음 포스트를 참고하세요
Windows 10 환경에서 Visual Studio Code와 Miniconda를 사용한 Flask 개발 환경 만들기
https://webnautes.tistory.com/1522
Miniconda를 설치하지 않고 pip install flask 명령으로 해도 상관은 없습니다.
2021. 12. 26 최초작성.
session_example.py 로 저장합니다.
from flask import Flask, session, redirect, request, url_for app = Flask(__name__) # 세션에 저장된 값을 암호화하기 위해 사용합니다. app.secret_key = b'_5#y2L"F4Q8z\n\xec]/' @app.route('/') def index(): # 세션에 사용자 아이디가 저장된 경우 해당 아이디를 보여줍니다. if 'username' in session: return f'Logged in as {session["username"]}' return 'You are not logged in' @app.route('/login', methods=['GET', 'POST']) def login(): if request.method == 'POST': # 사용자 아이디를 세션에 저장하고 /로 리다이렉트합니다. session['username'] = request.form['username'] return redirect(url_for('index')) # 사용자에게 UI를 보여줍니다. return ''' <form method="post"> <p><input type=text name=username> <p><input type=submit value=Login> </form> ''' @app.route('/logout') def logout(): # 사용자 아이디를 세션에서 제거하고 /로 리다이렉트합니다. session.pop('username', None) return redirect(url_for('index')) |
다음처럼 실행합니다.
set FLASK_APP=session_example
flask run
웹브라우저에서 http://127.0.0.1:5000/ 에 접속하면 로그인 되지 않았다는 메시지가 보입니다.
http://127.0.0.1:5000/login 로 접속한 후, 아이디를 입력하고, Login 버튼을 클릭하면
http://127.0.0.1:5000/ 로 리다이렉트되면서 입력한 아이디로 로그인되었다는 메시지가 보입니다.
이젠 http://127.0.0.1:5000/ 에 접속해도 로그인되었다는 메시지가 보입니다.
http://127.0.0.1:5000/logout에 접속하고 나면 http://127.0.0.1:5000/ 로 리다이렉트되면서 로그인 되지 않았다는 메시지가 보입니다.
'WEB > Flask' 카테고리의 다른 글
Flask 강좌 10 - Logging (0) | 2021.12.27 |
---|---|
Flask 강좌 9 - Message Flashing (0) | 2021.12.27 |
Flask 강좌 7 - JSON 응답하기 (0) | 2021.12.25 |
Flask 강좌 6 - 리다이렉트와 에러(Redirects and Errors) (0) | 2021.12.24 |
Flask 강좌 5 - request 예제(로그인, 파일 업로드, 쿠키) (0) | 2021.12.22 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!