这四个技术虽然在功能上有所不同,但在web应用中常常一起使用,已实现用户身份验证,授权和会话管理。
Token:指的是用于身份验证,授权成信息交换的令牌,可以有不同的实现方式,例如JWT。
Cookie:一种存储机制,用于在用户的浏览器中常用于存储会话标识符(SessionID)和Token
Session:一种管理用户会话的机制,通常在服务器端实现,用于存储用户的状态信息,通常与Cookie结合使用。
JWT:可作一种无状态的认证的替代方案,与传统的有状态Seesion相对。JWT包含用户信息,不需要服务器存储会话状态,而Session则需要服务器存储用户状态。
上文提到的有无状态指的就是是否创建和保存用户信息,以及如何处理用户会话状态这可以。
Token和Cookie:token可以存储在cookie中,例如JWT。
Session和Cookie:cookie常用于存储用户ID,以便用户浏览网站时保持会话状态,服务器根据SessionID来识别用户并恢复其会话信息。
对于Cookie来说,它主要与Session联系在一起,因为cookie作为一种存储机制,用来存储SessionID,这就是个人与银行的关系,也就是浏览器与服务器的关系,而session就是你在银行的库存,cookie就是银行卡,sessionID就是银行卡号和密码。至于cookie使用JWT,我个人觉得有点冗余了,因为JWT本身就可以存储信息,若使用cookie就给人一种“用货车拉货车”的感觉,前者为cookie,后者为jwt,当然有的时候这并不是多此一举的,这可以保证JWT的安全,也就是被拉货车的安全,cookie可以通过设置HttpOnly和Secure属性来减少xss和CSRF攻击的风险。