zl程序教程

您现在的位置是:首页 >  其他

当前栏目

cookie机制及其原理

2023-03-15 22:08:20 时间

一、多个值存储到一个cookie中

首先,存储在一块儿的数值应该是相关联的。多个值通过一个特殊的字符连接起来(特殊字符就是为了截取字符方便),然后用一个键来存储连接后的字符串。用document.cookie直接获取cookie的内容。

二、cookie实现自动登录原理

1. 保存用户信息阶段

当用户登录网站时,在登录页面填写完用户名和密码后,如果用户在提交时还选择了“两星期内自动登录”的复选框,那么在后台程序中验证用户名和密码都正确后,还要为用户保存这些信息,以便用户下一次可以直接进入网站;如果没有勾选“两星期内自动登录”复选框,则不必为用户保存这些信息,用户下次登录还需要填写用户名和密码。

在保存用户信息阶段,主要工作是对用户信息进行加密并保存到客户端。大致分为以下几步:

第一步:得到用户名、经MD5加密后的用户密码、cookie有效时间;

第二步:自定义一个Webkey,这个key是我们为自己网站定义的一个字符串常量;

第三步:将上两步得到的四个值连接成一个字符串,再进行MD5加密,这样就得到一个MD5明文字符串;

第四步:将用户名、cookie有效时间、MD5明文字符串使用“:”间隔连接起来,再对这个字符串进行Base64编码;

第五步:设置一个cookieName,将cookieName和上一步产生的Base64编码写入到客户端。

2. 读取用户信息

第一步:根据设置的cookieName,得到cookieValues,如果值为空,就不帮用户自动登录,否则执行读取方法;

第二步:将cookieValues进行Base64解码,将取得的字符串以split(":")进行拆分,得到一个String数组,这一步得到三个值:用户名、cookie有效期和MD5明文字符串;

第三步:判断cookieValues长度是否为3,如果不为3,则进行错误处理;

第四步:如果长度为3,则取出第二个,将有效时间与服务器系统当前的时间比较,看是否过期;

第五步:如果cookie没过期,就取cookieValues[0],然后去数据库按用户名查找用户;

第六步:若上一步返回空,则进行错误处理,否则返回一个User实例对象;

第七步:取出实例对象User的用户名、密码(该值经过MD5加密)、cookie有效时间、Webkey,然后将这四个值连接起来,然后进行MD5加密,这样做也会得到一个MD5明文字符串;

第八步:将上一步得到的MD5明文与cookieValues[2]进行equals比较,如果是false,则进行错误处理,如果是true,则将user对象添加到session中,帮助完成自动登录。

三、补充说明

MD5作为一种校验手段而非加密手段,因为MD5是不可逆的,但存在可重复性。