Flask學(xué)習(xí)(九) - cookie & session

WEB -> cookie & session

  • ? ?由于HTTP協(xié)議是無(wú)狀態(tài)的協(xié)議澜共,所以服務(wù)端需要記錄用戶(hù)的狀態(tài)時(shí),就需要用某種機(jī)制來(lái)識(shí)具體的用戶(hù),這個(gè)機(jī)制就是Session.典型的場(chǎng)景比如購(gòu)物車(chē)傲武,當(dāng)你點(diǎn)擊下單按鈕時(shí)蓉驹,由于HTTP協(xié)議無(wú)狀態(tài),所以并不知道是哪個(gè)用戶(hù)操作的揪利,所以服務(wù)端要為特定的用戶(hù)創(chuàng)建了特定的Session态兴,用用于標(biāo)識(shí)這個(gè)用戶(hù),并且跟蹤用戶(hù)疟位,這樣才知道購(gòu)物車(chē)?yán)锩嬗袔妆緯?shū)诗茎。這個(gè)Session是保存在服務(wù)端的,有一個(gè)唯一標(biāo)識(shí)献汗。
  • ? ?服務(wù)端如何識(shí)別特定的客戶(hù)?這個(gè)時(shí)候Cookie就登場(chǎng)了王污。每次HTTP請(qǐng)求的時(shí)候罢吃,客戶(hù)端都會(huì)發(fā)送相應(yīng)的Cookie信息到服務(wù)端。實(shí)際上大多數(shù)的應(yīng)用都是用 Cookie 來(lái)實(shí)現(xiàn)Session跟蹤的昭齐,第一次創(chuàng)建Session的時(shí)候尿招,服務(wù)端會(huì)在HTTP協(xié)議中告訴客戶(hù)端,需要在 Cookie 里面記錄一個(gè)Session ID阱驾,以后每次請(qǐng)求把這個(gè)會(huì)話(huà)ID發(fā)送到服務(wù)器就谜,我就知道你是誰(shuí)了。
  • ? ?Cookie其實(shí)還可以用在一些方便用戶(hù)的場(chǎng)景下里覆,設(shè)想你某次登陸過(guò)一個(gè)網(wǎng)站丧荐,下次登錄的時(shí)候不想再次輸入賬號(hào)了,怎么辦喧枷?這個(gè)信息可以寫(xiě)到Cookie里面虹统,訪問(wèn)網(wǎng)站的時(shí)候,網(wǎng)站頁(yè)面的腳本可以讀取這個(gè)信息隧甚,就自動(dòng)幫你把用戶(hù)名給填了车荔,能夠方便一下用戶(hù)。這也是Cookie名稱(chēng)的由來(lái)戚扳,給用戶(hù)的一點(diǎn)甜頭忧便。

總結(jié)

  1. Session是在服務(wù)端保存的一個(gè)數(shù)據(jù)結(jié)構(gòu),用來(lái)跟蹤用戶(hù)的狀態(tài)帽借,這個(gè)數(shù)據(jù)可以保存在集群珠增、數(shù)據(jù)庫(kù)、文件中宜雀;
  2. Cookie是客戶(hù)端保存用戶(hù)信息的一種機(jī)制切平,用來(lái)記錄用戶(hù)的一些信息,也是實(shí)現(xiàn)Session的一種方式辐董。

flask中的session和cookie

  • ? ?flask中的session機(jī)制是將敏感數(shù)據(jù)加密后放入session悴品,然后將session存入cookie,下次請(qǐng)求時(shí),直接從瀏覽器發(fā)過(guò)來(lái)的cookie中獲取session苔严,再?gòu)闹蝎@取數(shù)據(jù)進(jìn)行解密
  • ? ?這樣操作更節(jié)省服務(wù)開(kāi)銷(xiāo)定枷,因?yàn)閿?shù)據(jù)均存儲(chǔ)到客戶(hù)端
  • ? ?大家可能會(huì)擔(dān)心這種做法的安全性,因?yàn)閿?shù)據(jù)全部存儲(chǔ)在本地瀏覽器届氢,很容易被盜取欠窒,但是安全性總是相對(duì)的,而且flask里面對(duì)session也有自己的特殊加密算法退子,所以也不用太過(guò)于在意安全方面的問(wèn)題

Session操作

  1. 使用sessiom需要先導(dǎo)入session
from flask import session
  1. SECRET_KEY
    一定記得要設(shè)置SECRET_KEY岖妄,用于加密數(shù)據(jù),并且如果每次啟動(dòng)服務(wù)器你的秘鑰都在變化的話(huà)就不能再用之前的SECRET_KEY進(jìn)行解密了寂祥,我們此處就可以將它設(shè)置成固定值荐虐,對(duì)于配置文件里面變量的設(shè)置,前文講過(guò)丸凭,如果數(shù)據(jù)量比較多就單獨(dú)在config.py里面集成福扬,但是如果只是很微量的幾條設(shè)置,那么就可以在主文件里簡(jiǎn)單進(jìn)行指令設(shè)置即可惜犀,類(lèi)似這里的:
#生成隨機(jī)的24位字符串
app.config['SECRET_KEY'] = os.urandom(24)
  1. session值添加
    因?yàn)閟ession和cookie都是鍵值對(duì)形式的字典铛碑,所以直接用字典方法添加就可以了
session['username'] = 'user1'
  1. session值刪除
#1.單條刪除
session.pop('username')
del session['username']
#2. 全部清除
session.clear()
  1. session值獲取
session.get('username')
session['username']
  1. 設(shè)置過(guò)期時(shí)間(如果不設(shè)置,默認(rèn)瀏覽器退出即自動(dòng)結(jié)束)
#在config.py中配置session參數(shù)PERMANENT_SESSION_LIFETIME,這個(gè)值的數(shù)據(jù)類(lèi)型是datetime.timedelay類(lèi)型
app.config['PERMANENT_SESSION_LIFETIME'] = timedelta(days=7) 
session.permanent = True  #默認(rèn)為31天
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末虽界,一起剝皮案震驚了整個(gè)濱河市汽烦,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浓恳,老刑警劉巖刹缝,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異颈将,居然都是意外死亡梢夯,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)晴圾,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)颂砸,“玉大人,你說(shuō)我怎么就攤上這事死姚∪伺遥” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵都毒,是天一觀的道長(zhǎng)色罚。 經(jīng)常有香客問(wèn)我,道長(zhǎng)账劲,這世上最難降的妖魔是什么戳护? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任金抡,我火速辦了婚禮,結(jié)果婚禮上腌且,老公的妹妹穿的比我還像新娘梗肝。我一直安慰自己,他們只是感情好铺董,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布巫击。 她就那樣靜靜地躺著,像睡著了一般精续。 火紅的嫁衣襯著肌膚如雪坝锰。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 52,394評(píng)論 1 310
  • 那天重付,我揣著相機(jī)與錄音什黑,去河邊找鬼。 笑死堪夭,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的拣凹。 我是一名探鬼主播森爽,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼嚣镜!你這毒婦竟也來(lái)了爬迟?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤菊匿,失蹤者是張志新(化名)和其女友劉穎付呕,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體跌捆,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡徽职,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了佩厚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片姆钉。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖抄瓦,靈堂內(nèi)的尸體忽然破棺而出潮瓶,到底是詐尸還是另有隱情,我是刑警寧澤钙姊,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布毯辅,位于F島的核電站,受9級(jí)特大地震影響煞额,放射性物質(zhì)發(fā)生泄漏思恐。R本人自食惡果不足惜沾谜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望壁袄。 院中可真熱鬧类早,春花似錦、人聲如沸嗜逻。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)栈顷。三九已至逆日,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間萄凤,已是汗流浹背室抽。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留靡努,地道東北人坪圾。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像惑朦,于是被迫代替她去往敵國(guó)和親兽泄。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359