由於flask的session是經過加密以後放到了cookie中。因此有加密就有密鑰用於解密,因此,只要用到了flask的session模塊就必定要配置「SECRET_KEY」這個全局宏。通常設置爲24位的字符。配置方法通常有兩種。flask
新建一個config.py的文件配置secret_key
config.py瀏覽器
1 SECRET_KEY = 'XXXXXXXXX'
而後在主運行文件裏面添加config文件裏面的內容。
main.py服務器
1 # encoding: utf-8 2 3 from flask import Flask,session 4 import config 5 6 app = Flask(__name__)
直接在主運行文件裏面配置。配置config的時候也是和操做字典是同樣的
main.pycookie
1 # encoding: utf-8 2 3 from flask import Flask,session 4 5 app = Flask(__name__) 6 app.config['SECRET_KEY'] = 'XXXXX'
能夠引入OS模塊中的產生一個24位的隨機字符串的函數,這種方法有個缺點,就是服務器每次啓動以後這個SECRET_KEY的值都會變。具體本身體會!session
1 import os 2 3 app.config['SECRET_KEY'] = os.urandom(24) # 隨機產生24位的字符串做爲SECRET_KEY
1 from flask import Flask,session 2 import os 3 4 app = Flask(__name__) 5 app.config['SECRET_KEY'] = os.urandom(24) 6 7 # 設置session 8 @app.route('/') 9 def set(): 10 session['username'] = 'liefyuan' # 設置「字典」鍵值對 11 return 'success' 12 13 if __name__ == '__main__': 14 app.run()
由於session就像字典同樣因此,操做它的時候有兩種方法:app
因此,使用第二種方法獲取session較好。dom
1 from flask import Flask,session 2 import os 3 4 app = Flask(__name__) 5 app.config['SECRET_KEY'] = os.urandom(24) 6 7 # 設置session 8 @app.route('/') 9 def set(): 10 session['username'] = 'liefyuan' # 設置「字典」鍵值對 11 return 'success' 12 13 # 讀取session 14 @app.route('/get') 15 def get(): 16 # session['username'] 17 # session.get('username') 18 return session.get('username') 19 20 if __name__ == '__main__': 21 app.run()
1 #encoding: utf-8 2 3 from flask import Flask,session 4 import os 5 6 app = Flask(__name__) 7 app.config['SECRET_KEY'] = os.urandom(24) 8 9 10 # 設置session 11 @app.route('/') 12 def set(): 13 session['username'] = 'liefyuan' 14 return 'success' 15 16 17 # 讀取session 18 @app.route('/get/') 19 def get(): 20 # session['username'] 21 # session.get('username') 22 return session.get('username') 23 24 25 # 刪除session 26 @app.route('/delete/') 27 def delete(): 28 print session.get('username') 29 session.pop('username') 30 print session.get('username') 31 return 'success' 32 33 34 if __name__ == '__main__': 35 app.run()
1 #encoding: utf-8 2 3 from flask import Flask,session 4 import os 5 6 app = Flask(__name__) 7 app.config['SECRET_KEY'] = os.urandom(24) 8 9 10 # 設置session 11 @app.route('/') 12 def set(): 13 session['username'] = 'liefyuan' 14 return 'success' 15 16 17 # 讀取session 18 @app.route('/get') 19 def get(): 20 # session['username'] 21 # session.get('username') 22 return session.get('username') 23 24 25 # 刪除session 26 @app.route('/delete') 27 def delete(): 28 print session.get('username') 29 session.pop('username') 30 print session.get('username') 31 return 'success' 32 33 34 # 清除session中全部數據 35 @app.route('/clear') 36 def clear(): 37 print session.get('username') 38 # 清除session中全部數據 39 session.clear 40 print session.get('username') 41 return 'success' 42 43 if __name__ == '__main__': 44 app.run()
若是沒有指定session的過時時間,那麼默認是瀏覽器關閉後就自動結束。session.permanent = True在flask下則能夠將有效期延長至一個月。下面有方法能夠配置具體多少天的有效期。函數
app.config
設置PERMANENT_SESSION_LIFETIME
來更改過時時間,這個值的數據類型是datetime.timedelay
類型。使用的需求:加密
1 # 設置session 2 @app.route('/') 3 def set(): 4 session['username'] = 'liefyuan' 5 session.permanent = True # 長期有效,一個月的時間有效 6 return 'success'
一種更先進的配置有效期的方法:(好比配置7天有效)spa
from datetime import timedelta
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
session.permanent = True
1 #encoding: utf-8 2 3 from flask import Flask,session 4 from datetime import timedelta 5 import os 6 7 app = Flask(__name__) 8 app.config['SECRET_KEY'] = os.urandom(24) 9 app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效 10 11 12 # 設置session 13 @app.route('/') 14 def set(): 15 session['username'] = 'liefyuan' 16 session.permanent = True 17 return 'success'