您好,登錄后才能下訂單哦!
這篇文章主要介紹了Flask框架中的session怎么設置的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Flask框架中的session怎么設置文章都會有所收獲,下面我們一起來看看吧。
Flask除請求對象之外,還有一個 session 對象。
它允許你在不同請求間存儲特定用戶的信息。它是在 Cookies 的基礎上實現的,并且對 Cookies 進行密鑰簽名要使用會話,你需要設置一個密鑰。
我們知道,在django中的session是存儲在服務器中的數據庫中的,也就是django_session表中,而flask中的session是交由客戶端保管的,也就是存儲在本地的cookie中。
session的方法:
session['username'] = 'stzz';設置session
session.pop("username",None);刪除session
app.session_cookie_name = "I am not Session"
其他配置
'SESSION_COOKIE_NAME': 'session', # 設置session的名字 'SESSION_COOKIE_DOMAIN': None, 'SESSION_COOKIE_PATH': None, 'SESSION_COOKIE_HTTPONLY': True, 'SESSION_COOKIE_SECURE': False, 'SESSION_REFRESH_EACH_REQUEST': True, # 是否每次都跟新 'PERMANENT_SESSION_LIFETIME': timedelta(days=31) # 設置session的過期時間
cookies 中 session 存儲的是通過 secret_key 加密后的 key , 通過這個 key 從flask程序的內存中找到用戶對應的session信息
當我們開啟session時,設置session["username"]="stzz",flask會幫我們創建一個字典{"username":"stzz"},然后通過secret_key + 時間戳 + 簽名經過加密生成一個字符串。
當客戶端發送請求時,request請求會帶上cookie,也就是session中的數據存儲在其中,這個數據就是之前加密后的字符串,發送到后端后,flask會通過secret_key去解密session中的加密字符串,從而獲取{"username":"stzz"}從而來驗證是否登錄。
from flask.blueprints import Blueprint from flask import Response, session from flask_restful import fields, marshal from flask_sqlalchemy.query import Query from sqlalchemy import or_, and_ from ..model.UserModel import User import json user_bp = Blueprint("user", __name__, url_prefix="/user") user_fields = { "id": fields.Integer, "username": fields.String, "password": fields.String, "age": fields.Integer } @user_bp.route("/hello") def hello(): result = User.query.filter(or_(User.username.startswith("王"), and_(User.username == "王天祥", User.age > 21))) return marshal(result.all(), fields=user_fields) @user_bp.route("/setSession", methods=["GET", "POST"]) def setSession(): session["name"] = "STZZ" return "設置session成功!!!" @user_bp.route("/getSession") def getSession(): username = session.get("name") if username: return username else: return "用戶未登錄!!!"
關于“Flask框架中的session怎么設置”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Flask框架中的session怎么設置”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。