English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Flask 세션 세션

Cookie와 달리, 세션 데이터는 서버에 저장됩니다. 세션은 클라이언트가 서버에 로그인하고 로그아웃하는 시간 간격입니다. 이 세션에서 저장해야 할 데이터는 서버의 일시적인 디렉토리에 저장됩니다。

각 클라이언트의 세션에 세션 ID를 할당합니다. 세션 데이터는 cookie의 상단에 저장되며, 서버는 암호화된 방식으로 서명합니다. 이러한 암호화를 위해 Flask 애플리케이션은 SECRET_KEY를 정의해야 합니다。

세션 객체는 세션 변수와 관련된 값이 포함된 키-밸류 쌍을 가진 딕셔너리 객체입니다。

예를 들어, 'username' 세션 변수를 설정하려면 다음과 같은 문장을 사용하십시오 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
Session['username'] = 'admin'

세션 변수를 제거하려면 pop() 메서드를 사용하십시오。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
session.pop('username', None)

다음 코드는 Flask에서 세션 작동 방식의 간단한 예제입니다. URL => '/' 사용자가 설정되지 않았기 때문에 사용자를 로그인하도록 알려주세요。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
@app.route('/')
 def index():
    if 'username' in session:
       username = session['username']
          return ' 로그인한 사용자로 + username + '
' + \           "

当用户浏览到URL=>'/login'时,login()函数显示视图,因为它是通过GET方法调用的,所以打开一个登录表单。

表单填写后重新提交到URL=> /login,现在会话变量被设置。 应用程序被重定向到URL=> /。 这时找到会话变量:username。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
@app.route('/@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">
       

该应用程序还包含一个logout()视图函数,它删除’username’会话变量的值。 再次 URL 跳转到 ‘/‘ 显示开始页面。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
@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)。

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'any random string’

完整代码如下所示 -

# Filename : example.py
# Copyright : 2020 By w3codebox
# Author by : ko.oldtoolbag.com
# Date : 2020-08-08
from flask import Flask
 from flask import render_template
 from flask import request
 from flask import make_response
 from flask import Flask, session, redirect, url_for, escape, request
 app = Flask(__name__)
 app.secret_key = 'fkdjsafjdkfdlkjfadskjfadskljdsfklj'
 @app.route('/')
 def index():
     if 'username' in session:
         username = session['username']
         return '登录用户名是:' + username + '
' + \                   "点击这里注销

출력은 다음과 같이 표시됩니다. 링크를 클릭하십시오 여기를 클릭하여 로그인

이 링크는 다른 인터페이스로 이동됩니다. 'admin'을 입력하세요.

화면에 메시지가 표시됩니다 로그인 사용자 이름은: admin아래와 같이 표시됩니다 -