服務器判斷客戶端的用戶名和密碼(token的身份驗證)
HTTP 是一種沒有狀態的協議,也就是它並不知道是誰是訪問應用。
這里我們把用戶看成是客戶端,客戶端使用用戶名還有密碼通過了身份驗證,不過下回這個客戶端再發送請求時候,還得再驗證一下,
解決的方法就是,當用戶請求登錄的時候,如果沒有問題,我們在服務端生成一條記錄,這個記錄里可以說明一下登錄的用戶是誰,然后把這條記錄的 ID 號發送給客戶端,客戶端收到以后把這個 ID 號存儲在 Cookie 里,下次這個用戶再向服務端發送請求的時候,可以帶着這個 Cookie ,這樣服務端會驗證一個這個 Cookie 里的信息,看看能不能在服務端這里找到對應的記錄,如果可以,說明用戶已經通過了身份驗證,就把用戶請求的數據返回給客戶端
1、基於服務器的身份認證
我們清楚 http 協議是無狀態的,也就是說,如果我們已經認證了一個用戶,那么他下一次請求的時候,服務器不知道我是誰,我們就必須要再次認證。
我們與瀏覽器交互時,比如說登陸成功后,你再去獲取其他的數據,服務器能准確的給與響應,怎么做到的呢?
登陸成功后,服務器會為你開辟一塊內存區間 (可以理解為 session),用於存放你這次會話的一些內容,比如姓名、性別、年齡等;
存放數據的同時,會生成 session id來標記這塊內存區間是屬於你的,並且,這個 session id( jsessionid ) 會寫入到你的瀏覽器 cookie 中,
只要你瀏覽器沒關閉,每次向服務器發送請求,服務器就會從你發送過來的 cookie 中去取這個 session id,然后根據這個 session id 到相應的內存中
取出你之前存放的數據,但是,如果退出登錄。服務器會清除屬於你的內存區域,再登錄時,重新生成新的 session