参考了很多文章总结的。
1、cookie(储存在用户本地终端上的数据)
服务器生成,发送给浏览器,浏览器保存,下次请求同一网站再发送给服务器。
2、session(会话)
a、代表服务器与浏览器的一次会话过程,这个过程是连续的,也可以时断时续的。
b、cookie中存放着一个sessionID。请求时会发送这个ID。
c、session因为请求(request对象)而产生。
d、session是一个容器,可以存放会话过程中的任何对象。
e、session的创建和使用总在服务端,而浏览器从来都没得到过session对象。
f、Session 是一种HTTP存储机制,目的是为无状态的HTTP提供的持久机制。
3、token(“令牌”)
是用户身份的验证方式,最简单的token组成:uid(用户唯一的身份标识)、time(当前时间的时间戳)、sign(签名)。
4、cookie与session
a、cookie数据存放在客户端上,session数据放在服务器上。
b、cookie不是很安全,且保存数据有限。
c、session一定时间内保存在服务器上。当访问增多,占用服务器性能
5、session与token
作为身份认证 token安全性比session好
App通常用restful api跟server打交道。Rest是stateless的,也就是app不需要像browser那样用cookie来保存session,因此用session token来标示自己就够了,session/state由api server的逻辑处理。 如果你的后端不是stateless的rest api, 那么你可能需要在app里保存session.可以在app里嵌入webkit,用一个隐藏的browser来管理cookie session.
Session 认证只是简单的把User 信息存储到Session 里,因为SID 的不可预测性,暂且认为是安全的。这是一种认证手段。 而Token ,如果指的是OAuth Token 或类似的机制的话,提供的是 认证 和 授权 ,认证是针对用户,授权是针对App 。其目的是让 某App有权利访问 某用户 的信息。这里的 Token是唯一的。不可以转移到其它 App上,也不可以转到其它 用户 上。 转过来说Session 。Session只提供一种简单的认证,即有此 SID,即认为有此 User的全部权利。是需要严格保密的,这个数据应该只保存在站方,不应该共享给其它网站或者第三方App。 所以简单来说,如果你的用户数据可能需要和第三方共享,或者允许第三方调用 API 接口,用 Token 。如果永远只是自己的网站,自己的 App,用什么就无所谓了。
我的理解:
cookie存在浏览器,不安全;
session存在服务器,可能影响性能;
token身份认证安全性好,是唯一的。
若存在第三方,用token,不用session。