传统项目大部分采用session机制来追踪用户,如果部署集群,通常做法是将session存储到第三方组件如redis来实现,然而这样还是存在着一个问题,session是通过浏览器的cookie将sessionId发送到服务端来标记对应的会话,而cookie在跨域的情况下将失效,如果是涉及几个不同的系统,这时可能还得引入一个SSO。
ofa采用jwt(Json web token)生成token来作为用户的凭证。用户登录后,服务端通过密钥生成token返回给前端,前端每次请求都携带token,服务器接收到请求后通过密钥进行校验,服务端不保留用户登陆的信息。
JWT主要由三部分组成:
jwt的头部承载两部分信息:
载荷就是存放有效信息的地方,这些有效信息包含三个部分
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:
完整的token大概如下:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiYWRtaW4iOnRydWV9.TJVA95OrM7E2cBab30RMHrHDcEfxjoYZgeFONFh7HgQ
完整的流程如下: