cookie的詳細介紹、Tronado帶簽名的cookie原理、基於cookie實現用戶驗證javascript
cookie本質就是存於瀏覽器的 鍵值對。html
特性:前端
每次http請求服務端的時候,都會帶着這個cookie去。java
在tronado中操做cookie的方法:jquery
每一個方法具體參數這個不討論。瀏覽器
dcument.cookie:在前端經過此方法能夠在瀏覽器中獲取全部的cookie、設置或獲取指定。安全
說明:cookie
一、此方法獲取的cookie是一個普通的字符串,而咱們要想以對象的方式獲取cookie中key值對應的值的話。得使用特殊的方法將字符串轉換成對象。而後便能直接經過對象點的方式來獲取了。dom
二、這一步的操做,無論是在前臺仍是在後臺,語言都爲咱們提供了特定的方式,來處理此類型的字符串對象。ui
設置cookie:
document.cookie = "k1=v1";
一樣能夠設置cookie做用的路徑,過時時間等。
咱們在實際操做中會常常用到cookie,cookie也會涉及某些安全信息,若是咱們設置的cookie太過簡單的話,可能致使信息遺漏,別人能夠輕鬆僞造信息來執行某些操做。設置過去簡單的cookie是很不安全的。
所以在實際運用中,咱們要儘可能將咱們的cookie設置嚴格、複雜點。提升安全性。
在tronado內部中有一種帶簽名的cookie,也能夠叫 「cookie加鹽」。就是爲了提升cookie的安全。
以往瀏覽器中添加cookie k=v1 來講:
一、會對咱們輸入的值v1進行base64位的加密。(這個加密是能夠被反解的)
二、將base64位的結果結合 「|」後面base64爲結果加當前時間的時間戳再加指定的字符串。
三、在將第二步的結果總體進行一個相似MD5加密的加密方式,這步操做後返回一個新的加密字符串。
四、而後會將base64的結果,綜合加密的字符串結果和當前加密使用的時間戳,經過「|」連接起來,一塊兒寫到cookie中。
這樣當用戶第一次訪問的時候,服務端就會個瀏覽器端設置一個這樣的cookie,之後瀏覽器端再來請求的時候,都會帶着這個cookie。
當瀏覽器再來訪問的時候,帶着這個cookie過來,服務端就會經過此cookie驗證用戶cookie是否合法,合法的話經過指定字段,就能在服務端獲取對應用戶的指定信息。
後臺操做:
一、首先經過cookie獲取對應的cookie,而後經過字符串分割,以「|」分割。獲取第一段前臺 base64的結果。
二、獲取第二段爲加密後的字符串組合,同時也可獲取加密時使用的時間戳。
三、自定義字符串,自己在服務端設置的,因此能夠在服務端直接獲取。
四、而後將指定的字段組合,再進行一次加密,而後和從cookie中獲取的第二段字符串進行比較。
若是不匹配,則說明在請求帶過來的被修改過,咱們能夠進行對應不合法的方法處理。若是成功,則表示用戶是正確的,則作對應成功的方法處理。