會話與Cookie:用戶登錄的原理是什么?
Facebook、 Gmail、 Twitter 是我們每天都會用的網(wǎng)站(LCTT 譯注:才不是呢)。它們的共同點在于都需要你登錄進去后才能做進一步的操作。只有你通過認證并登錄后才能在 twitter 發(fā)推,在 Facebook 上評論,以及在 Gmail上處理電子郵件。
gmail, facebook login page
那么登錄的原理是什么?網(wǎng)站是如何認證的?它怎么知道是哪個用戶從哪兒登錄進來的?下面我們來對這些問題進行一一解答。
用戶登錄的原理是什么?
每次你在網(wǎng)站的登錄頁面中輸入用戶名和密碼時,這些信息都會發(fā)送到服務器。服務器隨后會將你的密碼與服務器中的密碼進行驗證。如果兩者不匹配,則你會得到一個錯誤密碼的提示。如果兩者匹配,則成功登錄。
登錄時發(fā)生了什么?
登錄后,web 服務器會初始化一個會話并在你的瀏覽器中設置一個 cookie 變量。該 cookie 變量用于作為新建會話的一個引用。搞暈了?讓我們說的再簡單一點。
會話的原理是什么?
服務器在用戶名和密碼都正確的情況下會初始化一個會話。會話的定義很復雜,你可以把它理解為“關系的開始”。
session beginning of a relationship or partnership
認證通過后,服務器就開始跟你展開一段關系了。由于服務器不能象我們人類一樣看東西,它會在我們的瀏覽器中設置一個 cookie 來將我們的關系從其他人與服務器的關系標識出來。
什么是 Cookie?
cookie 是網(wǎng)站在你的瀏覽器中存儲的一小段數(shù)據(jù)。你應該已經(jīng)見過他們了。
theitstuff official facebook page cookies
當你登錄后,服務器為你創(chuàng)建一段關系或者說一個會話,然后將唯一標識這個會話的會話 id 以 cookie 的形式存儲在你的瀏覽器中。
什么意思?
所有這些東西存在的原因在于識別出你來,這樣當你寫評論或者發(fā)推時,服務器能知道是誰在發(fā)評論,是誰在發(fā)推。
當你登錄后,會產生一個包含會話 id 的 cookie。這樣,這個會話 id 就被賦予了那個輸入正確用戶名和密碼的人了。
facebook cookies in web browser
也就是說,會話 id 被賦予給了擁有這個賬戶的人了。之后,所有在網(wǎng)站上產生的行為,服務器都能通過他們的會話 id 來判斷是由誰發(fā)起的。
如何讓我保持登錄狀態(tài)?
會話有一定的時間限制。這一點與現(xiàn)實生活中不一樣,現(xiàn)實生活中的關系可以在不見面的情況下持續(xù)很長一段時間,而會話具有時間限制。你必須要不斷地通過一些動作來告訴服務器你還在線。否則的話,服務器會關掉這個會話,而你會被登出。
websites keep me logged in option
不過在某些網(wǎng)站上可以啟用“保持登錄”功能,這樣服務器會將另一個唯一變量以 cookie 的形式保存到我們的瀏覽器中。這個唯一變量會通過與服務器上的變量進行對比來實現(xiàn)自動登錄。若有人盜取了這個唯一標識(我們稱之為 cookie stealing),他們就能訪問你的賬戶了。
結論
我們討論了登錄系統(tǒng)的工作原理以及網(wǎng)站是如何進行認證的。我們還學到了什么是會話和 cookies,以及它們在登錄機制中的作用。
我們希望你們以及理解了用戶登錄的工作原理,如有疑問,歡迎提問。