Flask – 세션

쿠키와 마찬가지로 세션 데이터는 클라이언트에 저장됩니다. 세션은 클라이언트가 서버에 로그인하고 로그 아웃하는 시간 간격입니다. 이 세션에서 보관해야하는 데이터는 클라이언트 브라우저에 저장됩니다.

각 클라이언트와의 세션에는 Session ID. 세션 데이터는 쿠키 위에 저장되며 서버는 쿠키에 암호화 방식으로 서명합니다. 이 암호화를 위해 Flask 애플리케이션에는 정의 된SECRET_KEY.

세션 개체는 세션 변수 및 관련 값의 키-값 쌍을 포함하는 사전 개체이기도합니다.

예를 들어, ‘username’ 세션 변수는 문을 사용-

Session[‘username’] = ’admin’

세션 변수를 해제하려면 pop() 방법.

session.pop('username', None)

다음 코드는 Flask의 세션 작업에 대한 간단한 데모입니다. URL‘/’ 사용자에게 세션 변수로 로그인하라는 메시지를 표시합니다. ‘username’ 설정되지 않았습니다.

@app.route('/')
def index():
   if 'username' in session:
      username = session['username']
         return 'Logged in as ' + username + '<br>' + \
         "<b><a href = '/logout'>click here to log out</a></b>"
   return "You are not logged in <br><a href = '/login'></b>" + \
      "click here to log in</b></a>"

사용자가 '/ login'을 탐색 할 때 login () 뷰 함수는 GET 메서드를 통해 호출되기 때문에 로그인 양식을 엽니 다.

양식이 다시 게시됩니다. ‘/login’이제 세션 변수가 설정되었습니다. 응용 프로그램이 리디렉션됩니다.‘/’. 이번 세션 변수‘username’ 발견되었습니다.

@app.route('/login', methods = ['GET', 'POST'])
def login():
   if request.method == 'POST':
      session['username'] = request.form['username']
      return redirect(url_for('index'))
   return '''
	
   <form action = "" method = "post">
      <p><input type = text name = username/></p>
      <p<<input type = submit value = Login/></p>
   </form>
	
   '''

응용 프로그램에는 또한 logout() 튀어 나오는보기 기능 ‘username’세션 변수. 그 후,‘/’ URL은 다시 시작 페이지를 보여줍니다.

@app.route('/logout')
def logout():
   # remove the username from the session if it is there
   session.pop('username', None)
   return redirect(url_for('index'))

응용 프로그램을 실행하고 홈페이지를 방문하십시오. (설정 확인secret_key 응용 프로그램의)

from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
app.secret_key = 'any random string’

출력은 아래와 같이 표시됩니다. 링크를 클릭“click here to log in”.

링크는 다른 화면으로 연결됩니다. 'admin'을 입력합니다.

화면에 메시지가 표시됩니다. ‘Logged in as admin’.