token cookie session
Token cookie session 区别
- Cookie由服务端生成,发送给浏览器,浏览器把cookie以键值对的形式存储到本地,每次请求时网站会自动把cookie发送给服务端,每个cookie存储空间为3-4Kb,不会占据大量内存,但是每个站点的cookie数量是有限的。
- Session 由服务端存储,是基于cookie实现的,session本身存储在服务端,但服务端会将sessionID发送给浏览器保存到cookie中,每次请求时会携带上sessionID去服务端。
- Token是服务器经过计算生成的一串加密字符串,作为客户端进行请求的令牌,当第一次登陆时,服务器会生成一个token并返回给客户端,当客户端发起请求时携带上Token到服务端,如果验证成功就向客户端返回请求的数据。
那么Token都可以解决哪些问题呢?
- Token具有随机性、不可预测性、时效性、无状态、跨域等特点。
- Token完全由应用管理,所以它可以避开同源策略
- Token可以避免CSRF攻击
- Token可以是无状态的,可以在多个服务间共享
- Token是在服务端产生的。如果前端使用用户名/密码向服务端请求认证,服务端认证成功,那么在服务端会返回Token给前端。前端可以在每次请求的时候带上Token证明自己的合法地位。如果这个Token在服务端持久化(比如存入数据库),那它就是一个永久的身份令牌。
Cookies的用途
Cookies是一些存储在用户电脑上的小文件。它是被设计用来保存一些站点的用户数据,这样能够让服务器为这样的用户定制内容。页面代码能够获取到Cookie值然后发送给服务器,比如Cookie中存储了所在地理位置,以后每次进入地图就可以默认定位到改地点。
Session的用途
Session用于保存每个用户的专用信息,每个客户端用户访问时,服务器都为每个用户分配一个唯一的会话ID(Session ID) . 她的生存期是用户持续请求时间再加上一段时间(一般是20分钟左右)。
Session中的信息保存在Web服务器内容中,保存的数据量可大可小。当 Session超时或被关闭时将自动释放保存的数据信息。由于用户停止使用应用程序后它仍然在内存中保持一段时间,因此使用Session对象使保存用户数据的方法效率很低。对于小量的数据,使用Session对象保存还是一个不错的选择