前后端分离为什么不用session来保存登录状态,用 token based 验证 用意何在?

cookie 和 session 的区别:

是基于Cookie的身份验证,使用端的cookie来对每次请求的用户进行身份验证。

token和session的区别_token跟sessiontoken和session的区别_token跟session


token和session的区别_token跟session


较新的方法,基于令牌Token-Based的认证,依赖于被发送到上每个请求的签署令牌。 为什么基于令牌token-based的方式更好呢?理由如下:

跨域 / CORS: cookies + CORS 并不能跨不同的域名.而基于令牌能够使用 AJAX 调用,在任何域名下你都可以使用HTTP header头部来传输用户信息。

无态(代表端可伸缩): 没有必要将会话保存,令牌 token 自己是一个自我包容的实体,包含用户各种信息,其他状态信息可以保存在cookie或客户端本地存储器中

CDN: 能够适用来自CDN任何应用部件(e.g. jascript, HTML, images, etc.), 你的只是一个 API.

解耦: 你不必和一个特定的验证格式Schema绑定,令牌token 能在任何地方产生,这样的你的API可以在任何地方以同一种验证方式调用验证。

对移动Mobile友善: 当你在一个原生平台(iOS, Android, Windows 8, etc.)时, cookies依赖于一个安全API,并不是好主意,因为你得和一个cookie容器打交道,而基于令牌则简单多。

CSRF: 因为你不依赖cookies, 你就不需要跨请求保护,(e.g. it 有可能来自