您好,登錄后才能下訂單哦!
這篇文章主要為大家展示了“基于cookie登陸驗證與退出的示例分析”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“基于cookie登陸驗證與退出的示例分析”這篇文章吧。
看到信息里面有這樣一條疑問:
是一個關于關于cookie登陸退出的問題。問題原文為:怎么實現退出登陸,頁面跳轉到登陸頁面,前端登陸后,后端返回字段設置cookie 就可以實現身份認證,但是這個cookies 應該是設置了httponly 字段,不允許前端js操作的,那點擊退出按鈕怎么應該做什么
首先先解決這樣一個疑問,就是不論cookie有沒有設置httponly屬性,登陸或者退出時候的cookie都不應該由js來操作。具體原因后面會說。
網站發送登陸請求之后,在響應頭中通過Set-Cookie來設置cookie,瀏覽器接收到響應后,會將Set-Cookie中的cookie信息存儲到瀏覽器,如圖:
此時查看瀏覽器的application 如圖:
這是登陸的情況,那退出呢?這時有些朋友認為,點擊退出按鈕,或者進行退出操作,直接調用js刪除cookie不就可以了嗎,一般的項目中是不會這樣操作的,刪除cookie也是通過后端來實現。既然后端可以通過Set-Cookie設置cookie,那么也應該可以通過Set-Cookie刪除cookie,所以一般的項目接口文檔中都會有一個退出接口api。
當前端向這個退出api發送請求時,響應頭中的Set-Cookie一般會將登陸時設置的cookie(PHPSESSID)的expires屬性設置成一個過期時間。這樣瀏覽器解析這個Set-Cookie時就將PHPSESSID刪除掉了。
當向這個退出接口發送信息的時候,看看network會響應什么呢,如圖:
再看看appliaction的顯示結果:
那為什么不可以用前端的js刪除cookie呢,這里就涉及到了session信息,當你登陸網站后,后端服務器將一個cookie返回給前端,并且會在后端數據庫存儲一個cookie,這兩個cookie是相同的,每次退出后兩個cookie都應該刪除,這就需要前端向后端發送一個刪除cookie的請求,服務器接受到請求后刪除cookie,并在響應頭中設置如下信息。
Set-Cookie:PHPSESSID=deleted; expires=Thu, 01-Jan-1970 00:00:01 GMT; path=/
瀏覽器接受到以上信息,根據expires字段信息判斷cookie過期(1970年就過期了),將cookie刪除。這樣兩個cookie就都刪除了。
如果只是用前端js將cookie手動清除,后端依然保存著cookie,造成資源浪費,當然還有一些其他的弊端,這里不做贅述。
以上是“基于cookie登陸驗證與退出的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。