Cookies vs Tokens: The Definitive Guide
JSON Web Token (JWT)和基于cookie的认证机制的比较。
基于cookie的authentication需要在服务端记状态。 而JWT是stateless的,这样服务的水平扩展性更好(不用考虑类似session replication这样的问题)。 不像cookie,JWT可以cross domain。 使用JWT后,API的使用者可以不局限于浏览器,这样对mobile app更友好。 session机制需要一些服务端查找,相比而言可能JWT的性能会好点。
想起了Rails的EncryptedCookieStore。 EncryptedCookieStore和JWT一样也是完全存在于client端。 和JWT的一个不同点是EncryptedCookieStore会加密内容,JWT不会(JWT只是sign)。
基于cookie的session机制可以在服务端让session失效。 JWT则需要在客户端做失效。