session、token、cookie

来源:

http://blog.csdn.net/cwb1128/article/details/7899873

http://blog.csdn.net/ghsau/article/details/20395681

token

http://www.jianshu.com/p/576dbf44b2ae

session

当用户第一次通过浏览器使用用户名和密码访问服务器时,服务器会验证用户数据,验证成功后在服务器端写入用户的sessionID数据,向客户端浏览器返回sessionid,浏览器将sessionid保存在cookie中。当用户再次访问服务器时,会通过cookie自动携带sessionid,服务器会拿着sessionid从数据库获取session数据,然后进行用户信息查询,查询到,就会将查询到的用户信息返回,从而实现状态保持。
session超过一定时间(一般为30分钟)没有被访问时,服务器就会认为这个session对应的客户端已经停止活动,然后将这个session删除。用以节省空间。

session机制带来的问题

1.每个用户都要在服务器保存一条session数据,随着用户量增大,服务器负载增大;

2.session存在服务器内存,下次用户必须请求在该台服务器上才能拿到授权资源,这样就限制了负载均衡,也限制了应用的扩展能力。

3.由于浏览器cookie机制的自动使用,只有客户端和服务端在同一台服务器才可使用(跨域如果也带上了cookie,会存在安全问题),因此当客户端和服务端在不同服务器,session无法使用。

4.CSRF跨站伪造请求攻击。

token

1.用户认证成功后,服务端对用户数据进行加密生成token,返回给客户端(服务端不进行保存),客户端将token存储在local storage(通过代码写入和获取,而非自动)。再次访问服务端时带上token,服务端对token进行解密,然后查询用户数据,查询成功则通过认证实现状态保持。
2.因此,即时有了多台服务器,服务器也只是做了token的解密和用户数据的查询,它不需要在服务端去保留用户的认证信息或者会话信息,这就意味着基于token认证机制的应用不需要去考虑用户在哪一台服务器登录了,这就为应用的扩展提供了便利,解决了session扩展性的弊端。
3.适用于前后端分离的项目。

你可能感兴趣的:(session、token、cookie)