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中获取的第二段字符串进行比较。
若是不匹配,则说明在请求带过来的被修改过,咱们能够进行对应不合法的方法处理。若是成功,则表示用户是正确的,则作对应成功的方法处理。