1、sessionphp
session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来讲更安全,但是session有一个缺陷:若是web服务器作了负载均衡,那么下一个操做请求到了另外一台服务器的时候session会丢失。下面是php(phalcon框架)的例子
web
以数组形式保存用户登陆的信息(id、name、avatar),算法
$this->session->set('userInfo', array( 'id' => $admin->id, 'name' => $admin->name, 'avatar' => $admin->avatar ));
session是全局的,在一个地方保存了,其余地方就能够用
数组
if ($this->session->has("userInfo")) { $userInfo = $this->session->get('userInfo'); return $userInfo; }
2、cookie浏览器
cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,下一次请求同一网站时会把该cookie发送给服务器。因为cookie是存在客户端上的,因此浏览器加入了一些限制确保cookie不会被恶意使用,同时不会占据太多磁盘空间,因此每一个域的cookie数量是有限的。安全
cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,通常设置为全局:"\")、失效时间、安全标志(指定后,cookie只有在使用SSL链接时才发送到服务器(https))。下面是一个简单的js使用cookie的例子:服务器
用户登陆时产生cookie:cookie
document.cookie = "id="+result.data['id']+"; path=/"; document.cookie = "name="+result.data['name']+"; path=/"; document.cookie = "avatar="+result.data['avatar']+"; path=/";
使用到cookie时作以下解析:session
var cookie = document.cookie; var cookieArr = cookie.split(";"); var user_info = {}; for(var i = 0; i < cookieArr.length; i++) { user_info[cookieArr[i].split("=")[0]] = cookieArr[i].split("=")[1]; } $('#user_name').text(user_info[' name']); $('#user_avatar').attr("src", user_info[' avatar']); $('#user_id').val(user_info[' id']);
3、token负载均衡
token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户惟一的身份标识)、time(当前时间的时间戳)、sign(签名,由token的前几位+盐以哈希算法压缩成必定长的十六进制字符串,能够防止恶意第三方拼接token请求服务器)。还能够把不变的参数也放进token,避免屡次查库