三者都是应用在web中对http无状态协议的补充,达到状态保持的目的
cookie:cookie中的信息是以键值对的形式储存在浏览器中,而且在浏览器中可以直接看到数据。下图为safari的cookie截图:
session:session存储在服务器中,然后发送一个cookie存储在浏览器中,cookie中存储的是session_id,之后每次请求服务器通过session_id可以获取对应的session信息
JWT:JWT存储在浏览器的storage或者cookie中。由服务器产生加密的json数据包括:header,payload和signature三部分组成。header中通常来说由token的生成算法和类型组成;payload中则用来保存相关的状态信息;signature部分由header,payload,secret_key三部分加密生成。 注意,不要在JWT的payload或header中放置敏感信息,除非它们是加密的。下图为官网的截图:
cookie:
session:
JWT:
这两个概念总有人用混淆,所以一起介绍了。
OAuth2是一种授权框架,用在使用第三方账号登录的情况(比如使用weibo, qq, github登录某个app) JWT是一种认证协议,用在前后端分离,需要简单的对后台API进行保护时使用。
无论使用哪种方式切记用HTTPS来保证数据的安全性;