溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于cookie登陸驗(yàn)證與退出的示例分析

發(fā)布時(shí)間:2022-01-19 09:29:36 來源:億速云 閱讀:174 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要為大家展示了“基于cookie登陸驗(yàn)證與退出的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“基于cookie登陸驗(yàn)證與退出的示例分析”這篇文章吧。

看到信息里面有這樣一條疑問:

基于cookie登陸驗(yàn)證與退出的示例分析

是一個(gè)關(guān)于關(guān)于cookie登陸退出的問題。問題原文為:怎么實(shí)現(xiàn)退出登陸,頁面跳轉(zhuǎn)到登陸頁面,前端登陸后,后端返回字段設(shè)置cookie 就可以實(shí)現(xiàn)身份認(rèn)證,但是這個(gè)cookies 應(yīng)該是設(shè)置了httponly 字段,不允許前端js操作的,那點(diǎn)擊退出按鈕怎么應(yīng)該做什么

首先先解決這樣一個(gè)疑問,就是不論cookie有沒有設(shè)置httponly屬性,登陸或者退出時(shí)候的cookie都不應(yīng)該由js來操作。具體原因后面會(huì)說。

網(wǎng)站發(fā)送登陸請(qǐng)求之后,在響應(yīng)頭中通過Set-Cookie來設(shè)置cookie,瀏覽器接收到響應(yīng)后,會(huì)將Set-Cookie中的cookie信息存儲(chǔ)到瀏覽器,如圖:

基于cookie登陸驗(yàn)證與退出的示例分析

此時(shí)查看瀏覽器的application 如圖:

基于cookie登陸驗(yàn)證與退出的示例分析

這是登陸的情況,那退出呢?這時(shí)有些朋友認(rèn)為,點(diǎn)擊退出按鈕,或者進(jìn)行退出操作,直接調(diào)用js刪除cookie不就可以了嗎,一般的項(xiàng)目中是不會(huì)這樣操作的,刪除cookie也是通過后端來實(shí)現(xiàn)。既然后端可以通過Set-Cookie設(shè)置cookie,那么也應(yīng)該可以通過Set-Cookie刪除cookie,所以一般的項(xiàng)目接口文檔中都會(huì)有一個(gè)退出接口api。

當(dāng)前端向這個(gè)退出api發(fā)送請(qǐng)求時(shí),響應(yīng)頭中的Set-Cookie一般會(huì)將登陸時(shí)設(shè)置的cookie(PHPSESSID)的expires屬性設(shè)置成一個(gè)過期時(shí)間。這樣瀏覽器解析這個(gè)Set-Cookie時(shí)就將PHPSESSID刪除掉了。

當(dāng)向這個(gè)退出接口發(fā)送信息的時(shí)候,看看network會(huì)響應(yīng)什么呢,如圖:

基于cookie登陸驗(yàn)證與退出的示例分析

再看看appliaction的顯示結(jié)果:

基于cookie登陸驗(yàn)證與退出的示例分析

那為什么不可以用前端的js刪除cookie呢,這里就涉及到了session信息,當(dāng)你登陸網(wǎng)站后,后端服務(wù)器將一個(gè)cookie返回給前端,并且會(huì)在后端數(shù)據(jù)庫存儲(chǔ)一個(gè)cookie,這兩個(gè)cookie是相同的,每次退出后兩個(gè)cookie都應(yīng)該刪除,這就需要前端向后端發(fā)送一個(gè)刪除cookie的請(qǐng)求,服務(wù)器接受到請(qǐng)求后刪除cookie,并在響應(yīng)頭中設(shè)置如下信息。

Set-Cookie:PHPSESSID=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/

瀏覽器接受到以上信息,根據(jù)expires字段信息判斷cookie過期(1970年就過期了),將cookie刪除。這樣兩個(gè)cookie就都刪除了。

如果只是用前端js將cookie手動(dòng)清除,后端依然保存著cookie,造成資源浪費(fèi),當(dāng)然還有一些其他的弊端,這里不做贅述。

以上是“基于cookie登陸驗(yàn)證與退出的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI