計算機網絡面試題 – 什麼是session,有哪些實現session 的機制?

計算機網絡面試題 – 什麼是session,有哪些實現session 的機制?

計算機網絡面試題 – 什麼是session,有哪些實現session 的機制?


session 是一種維持客戶端與服務器端會話的機制。但是與cookie 把會話信息保存在客戶端本地不一樣,session 把會話保留在瀏覽器端。

我們同樣以登陸案例為例子講解session 的使用過程:

    01.首先用戶在客戶端瀏覽器發起登陸請求

    02.登陸成功後,服務端會把用戶信息保存在服務端,並返回一個唯一的session 標識給客戶端瀏覽器。

    03.客戶端瀏覽器會把這個唯一的session 標識保存在起來

    04.以後再次訪問web 應用時,客戶端瀏覽器會把這個唯一的session 標識帶上,這樣服務端就能根據這個唯一標識找到用戶信息。

看到這裡可能會引起疑問:把唯一的session 標識返回給客戶端瀏覽器,然後保存起來,以後訪問時帶上,這難道不是cookie 嗎?

沒錯,session 只是一種會話機制,在許多web 應用中,session 機制就是通過cookie 來實現的。也就是說它只是使用了cookie 的功能,並不是使用cookie 完成會話保存。與cookie 在保存客戶端保存會話的機制相反,session 通過cookie 的功能把會話信息保存到了服務端。

進一步地說,session 是一種維持服務端與客戶端之間會話的機制,它可以有不同的實現。以現在比較流行的小程序為例,闡述一個session 的實現方案:

    01.首先用戶登陸後,需要把用戶登陸信息保存在服務端,這裡我們可以採用redis。比如說給用戶生成一個userToken,然後以userId 作為鍵,以userToken 作為值保存到redis 中,並在返回時把userToken 帶回給小程序端。

    02.小程序端接收到userToken 後把它緩存起來,以後每當訪問後端服務時就把userToken 帶上。

    03.在後續的服務中服務端只要拿著小程序端帶來的userToken 和redis 中的userToken 進行比對,就能確定用戶的登陸狀態了。

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *