반응형

세션(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/  로 리다이렉트되면서 로그인 되지 않았다는 메시지가 보입니다. 

 


반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts