網(wǎng)站是提供給用戶的,用戶分為會員、普通用戶、游客、管理員等。那么如何識別用戶的身份呢?
會話
會話用途之一:登錄驗證
不妨先從代碼開始...
log_in.py
@app.route('/common_user_login')
def common_log_in():
if session.get('common'):
return '您已登錄成功'
else:
return '請先登錄'
這段代碼將'/common_user_login'這個URL與common_log_in這個方案綁定,在方案中做出判定,并返回不同的結(jié)果。在這里我們發(fā)現(xiàn)了if語句中的條件為
session.get['common']
一頭霧水是嗎,我們再來看下面的代碼:
log.py
@app.route('/log')
def log():
session['common'] = 'True'
return redirect('/common_user_login')
多說無益,我們先跑一跑試試效果
首先我們直接在URL中輸入
127.0.0.1:5000/common_user_login

那如果輸入的是
127.0.0.1:5000/log

為什么?
仔細觀察的朋友可能會發(fā)現(xiàn),網(wǎng)址明明就是一樣的
log.py
@app.route('/log')
def log():
session['common'] = 'True'
return redirect('/common_user_login')
我們來回顧以下log.py。將'/log'這個URL綁定為一個叫做log的方案,在這個方案中,經(jīng)過了一句session['common'],最終重定向到了'/common_user_login'的URL中。
重定向相關(guān)的內(nèi)容將在之后說明
那么經(jīng)過的這句話,就是對session(會話)的一個定義。session可以理解為一個字典,session['common'] = 'True' 的含義為,將common這個索引的值賦值為'True'這個字符串。當(dāng)然你也可以賦值為其他的,比如:
session['common'] = 'I am good'
True只是一個字符串哦
在經(jīng)過初始化之后,
log_in.py
def common_log_in():
if session.get('common'):
return '您已登錄成功'
else:
return '請先登錄'
當(dāng)中的if session.get('common')語句返回值為1,含義為在session當(dāng)中,對于索引名為'common'找到對應(yīng)項了,于是,程序返回了'您已登錄成功'
我們來看一下整個程序的代碼
from flask import Flask, session, redirect
app = Flask(__name__)
app.config['SECRET_KEY']='hereismykeytosession'
@app.route('/common_user_login')
def common_log_in():
if session.get('common'):
return '您已登錄成功'
else:
return '請先登錄'
@app.route('/log')
def log():
session['common'] = 'True'
return redirect('/common_user_login')
if __name__ == '__main__':
app.run(debug = True)
要注意的是,flask中的會話session需要配置"密碼",也就是
app.config['SECRET_KEY']='hereismykeytosession'
這一語句。
session默認(rèn)過期時間為你關(guān)閉瀏覽器或清楚緩存時,當(dāng)然你也可以設(shè)置過期時間
app.config['PERMANENT_SESSION_LIFETIME'] =