JWT vs Session:认证方式对比
背景知识 github.com/golang-jwt/jwt Authentication 和 Authorization 的区别 Authentication: 认证,指的是验证用户的身份,例如你希望以 A 的身份登录,那么应用程序需要通过用户名和密码确认你真的是 A 。 Authorization: 授权,指的是确认你的身份之后提供给你权限,例如用户 A 可以修改数据,而用户 B 只能阅读数据。 由于 http 协议是无状态的,每一次请求都无状态。当一个用户通过用户名和密码登录了之后,他的下一个请求不会携带任何状态,应用程序无法知道他的身份,那就必须重新认证。因此我们希望用户登录成功之后的每一次 HTTP 请求,都能够保存他的登录状态。 目前主流的用户认证方法有基于 token 和基于 session 两种方式,常见的还有三种细分形态: 无状态 JWT (Stateless JWT):包含 Session 数据的 JWT Token,Session 数据直接编码进 Token 内。 有状态 JWT (Stateful JWT):包含 Session 引用或其 ID 的 JWT Token,Session 数据存储在服务端。 Session token(又称 Session cookie):标准的、可被签名的 Session ID,例如各类 Web 框架 (译者注: 包括 Laravel) 内已经使用了很久的 Session 机制,Session 数据同样存储在服务端。 以上背景知识整理自 Wi1dcard 的文章,原文地址:https://learnku.com/articles/22616(版权归原作者所有,商业转载请联系作者获得授权)。 Session vs JWT 详解 以下内容整理自 chengkai 的文章《聊一聊JWT与session》,原文地址:https://juejin.cn/post/6844903542449242126(版权归原作者所有)。 ...