**Flask session 概念解釋:**python
session 是基於cookie實現, 保存在服務端的鍵值對(形式爲 {隨機字符串:‘xxxxxx’}), 同時在瀏覽器中的cookie中也對應一相同的隨機字符串,用來再次請求的 時候驗證;數據庫
注意 :Flask中的session是存在瀏覽器中 默認key是session(加密的cookie), 也能夠像Django同樣基於上述的方式實現保存在數據庫flask
1、配置SECRET_KEY瀏覽器
由於flask的session是經過加密以後放到了cookie中。因此有加密就有密鑰用於解密,因此,只要用到了flask的session模塊就必定要配置「SECRET_KEY」這個全局宏。通常設置爲24位的字符。配置方法通常有兩種。cookie
配置方法一:session
新建一個config.py的文件配置secret_key app
config.pydom
SECRET_KEY = 'XXXXXXXXX'
而後在主運行文件裏面添加config文件裏面的內容。 ide
main.py加密
#encoding: utf-8 from flask import Flask,session import config app = Flask(__name__)
配置方法二:
直接在主運行文件裏面配置。配置config的時候也是和操做字典是同樣的
main.py
encoding: utf-8 from flask import Flask,session app = Flask(__name__) app.config['SECRET_KEY'] = 'XXXXX' 或者隨機數(os.urandom(24)) 或者 app.secret_key = 'why would I tell you my secret key?' key值可使用隨機數,或者自定義
from flask import Flask,session import os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) # 設置session @app.route('/') def set(): session['username'] = 'liefyuan' # 設置「字典」鍵值對(正式開發時候,值須要session.get('user')獲取) return 'success' if __name__ == '__main__': app.run()
由於session就像字典同樣因此,操做它的時候有兩種方法:
(1)result = session[‘key’] :若是內容不存在,將會報異常
(2)result = session.get(‘key’) :若是內容不存在,將返回None(推薦用法)
因此,使用第二種方法獲取session較好。
from flask import Flask,session import os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) # 設置session @app.route('/') def set(): session['username'] = 'liefyuan' # 設置「字典」鍵值對 return 'success' # 讀取session @app.route('/get') def get(): # session['username'] # session.get('username') return session.get('username') if __name__ == '__main__': app.run()
#encoding: utf-8 from flask import Flask,session import os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) # 設置session @app.route('/') def set(): session['username'] = 'liefyuan' return 'success' # 讀取session @app.route('/get/') def get(): # session['username'] # session.get('username') return session.get('username') # 刪除session @app.route('/delete/') def delete(): print session.get('username') session.pop('username',None) 或者 session['username'] = False print session.get('username') return 'success' if __name__ == '__main__': app.run()
#encoding: utf-8 from flask import Flask,session import os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) # 設置session @app.route('/') def set(): session['username'] = 'liefyuan' return 'success' # 讀取session @app.route('/get') def get(): # session['username'] # session.get('username') return session.get('username') # 刪除session @app.route('/delete') def delete(): print session.get('username') session.pop('username') 或者 session['username'] = False print session.get('username') return 'success' # 清除session中全部數據 @app.route('/clear') def clear(): print session.get('username') # 清除session中全部數據 session.clear print session.get('username') return 'success' if __name__ == '__main__': app.run()
若是沒有指定session的過時時間,那麼默認是瀏覽器關閉後就自動結束。session.permanent = True在flask下則能夠將有效期延長至一個月。下面有方法能夠配置具體多少天的有效期。
若是沒有指定session的過時時間,那麼默認是瀏覽器關閉後就自動結束
若是設置了session的permanent屬性爲True,那麼過時時間是31天。
能夠經過給app.config
設置PERMANENT_SESSION_LIFETIME
來更改過時時間,這個值的數據類型是datetime.timedelay
類型。
使用的需求:
1.在登陸網頁界面,下面有一個「記住我」選項,若是點擊了則設置session的有效期長一點。就是設置這個!
# 設置session @app.route('/') def set(): session['username'] = 'liefyuan' session.permanent = True # 長期有效,一個月的時間有效 return 'success'
一種更先進的配置有效期的方法:(好比配置7天有效)
1.引入包:from datetime import timedelta
2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
3.設置:session.permanent = True
#encoding: utf-8 from flask import Flask,session from datetime import timedelta import os app = Flask(__name__) app.config['SECRET_KEY'] = os.urandom(24) app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效 # 設置session @app.route('/') def set(): session['username'] = 'liefyuan' session.permanent = True return 'success'