session、cookie、token

一、session
  session的中文翻译是“会话”,当用户打开某个web应用时,便与web服务器产生一次session。
服务器使用session把用户的信息临时保存在了服务器上,用户离开网站后session会被销毁。这种用户信息存储方式相对cookie来说更安全,
可是session有一个缺陷:如果web服务器做了负载均衡,那么下一个操作请求到了另一台服务器的时候session会丢失。
  • 下面是php(phalcon框架)的例子
    • 以数组形式保存用户登录的信息(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;
}
二、cookie
  cookie是保存在本地终端的数据。cookie由服务器生成,发送给浏览器,浏览器把cookie以kv形式保存到某个目录下的文本文件内,
下一次请求同一网站时会把该cookie发送给服务器。由于cookie是存在客户端上的,所以浏览器加入了一些限制确保cookie不会被恶意使用,
同时不会占据太多磁盘空间,所以每个域的cookie数量是有限的。

     cookie的组成有:名称(key)、值(value)、有效域(domain)、路径(域的路径,一般设置为全局:"\")、失效时间、安全标志(指定后,
cookie只有在使用SSL连接时才发送到服务器(https))。
  • 下面是一个简单的js使用cookie的例子:
  • 用户登录时产生cookie:
document.cookie = "id="+result.data['id']+"; path=/";
document.cookie = "name="+result.data['name']+"; path=/";
document.cookie = "avatar="+result.data['avatar']+"; path=/";
  • 使用到cookie时做如下解析:
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']);
三、token
     token的意思是“令牌”,是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、
sign(签名,由token的前几位+盐以哈希算法压缩成一定长的十六进制字符串,可以防止恶意第三方拼接token请求服务器)。还可以把不变的参数也放进token,
避免多次查库
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容