基于JWT标准的用户认证接口实现

  实现用户登录认证的方式常见的有两种:一种是基于 cookie 的认证,另外一种是基于 token 的认证 。本文以基于cookie的认证为参照,详细介绍JWT标准,并实现基于该标签的用户认证接口

 

cookie认证

  传统的基于 cookie 的认证方式基本有下面几个步骤:

  1、用户输入用户名和密码,发送给服务器

  2、服务器验证用户名和密码,正确的话就创建一个会话( session ),同时会把这个会话的 ID 保存到客户端浏览器中,因为保存的地方是浏览器的 cookie ,所以这种认证方式叫做基于 cookie 的认证方式

  3、后续的请求中,浏览器会发送会话 ID 到服务器,服务器上如果能找到对应 ID 的会话,那么服务器就会返回需要的数据给浏览器

  4、当用户退出登录,会话会同时在客户端和服务器端被销毁

  这种认证方式的不足之处有两点

  1、服务器端要为每个用户保留 session 信息,连接用户多了,服务器内存压力巨大

  2、适合单一域名,不适合第三方请求

 

token认证

  下面来介绍token认证。详细认证过程如下

  1、用户输入用户名密码,发送给服务器

  2、服务器验证用户名和密码,正确的话就返回一个签名过的 token( token 可以认为就是个长长的字符串),客户端浏览器拿到这个 token

  3、后续每次请求中,浏览器会把 token 作为 http header 发送给服务器,服务器可以验证一下签名是否有效,如果有效那么认证就成功了,可以返回客户端需要的数据

  4、一旦用户退出登录,只需要客户端销毁一下 token 即可,服务器端不需要有任何操作

  这种方式的特点就是客户端的 token 中自己保留有大量信息,服务器没有存储这些信息,而只负责验证,不必进行数据库查询,执行效率大大提高

 

JWT

  上面介绍的token-based 认证过程是通过 JWT 标准来完成的

  JWT 是 JSON Web Token 的简写,它定义了一种在客户端和服务器端安全传输数据的规范。通过 JSON 格式 来传递信息

  让我们来假想一下一个场景。在A用户关注了B用户的时候,系统发邮件给B用户,并且附有一个链接“点此关注A用户”。链接的地址可以是这样的

https://your.awesome-app.com/make-friend/?from_user=B&target_user=A

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpggjz.html