Flask中的session操做

1、配置SECRET_KEY

由於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

 

2、操做session –操做session就如同操做字典!

1.設置session

 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()

 

2.讀取session

 由於session就像字典同樣因此,操做它的時候有兩種方法:app

  • (1)result = session[‘key’] :若是內容不存在,將會報異常
  • (2)result = session.get(‘key’) :若是內容不存在,將返回None

因此,使用第二種方法獲取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()

 

3.刪除session

 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()

 

4.清除session中全部數據

 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()

 

3、設置session的過時時間

 若是沒有指定session的過時時間,那麼默認是瀏覽器關閉後就自動結束。session.permanent = True在flask下則能夠將有效期延長至一個月。下面有方法能夠配置具體多少天的有效期。函數

  • 若是沒有指定session的過時時間,那麼默認是瀏覽器關閉後就自動結束
  • 若是設置了session的permanent屬性爲True,那麼過時時間是31天。
  • 能夠經過給app.config設置PERMANENT_SESSION_LIFETIME來更改過時時間,這個值的數據類型是datetime.timedelay類型。

使用的需求:加密

  • 1.在登陸網頁界面,下面有一個「記住我」選項,若是點擊了則設置session的有效期長一點。就是設置這個!
1 # 設置session
2 @app.route('/')
3 def set():
4     session['username'] = 'liefyuan'
5     session.permanent = True # 長期有效,一個月的時間有效
6     return 'success'

 

一種更先進的配置有效期的方法:(好比配置7天有效)spa

  • 1.引入包:from datetime import timedelta
  • 2.配置有效期限:app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) # 配置7天有效
  • 3.設置: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'
相關文章
相關標籤/搜索