Token:
在计算机身份认证中是令牌的意思,Token是服务端生成的一串字符串,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需要带上这个Token前来请求数据即可,不用再带上用户名和密码。
使用基于Token的身份验证方法,在服务端不需要存储用户的登录记录,大概流程为:
1> 客户端使用用户名跟密码请求登录
2> 服务端收到请求,去验证用户名与密码
3> 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
4> 客户端收到 Token以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
5> 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
6> 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据。
Token的主要作用就是用来做身份验证的。
使用Token的目的是为了减轻服务器的压力,减少频繁的查询数据库。持久登录,但是也是有时间限制的。
Token主要分为:header(头部),payload(负载),secret(秘钥)
header:token的类型。(一般格式不写)
payload:属性:iss(发行者),exp(过期时间),username:“”....
secret:秘钥,加盐。
secret会将header和payload随机拼接在一起,生成一个字符串,这个字符串是加密的。
顺序:
1 //第一步 token 2 const JWT = require("jsonwebtoken"); 3 //第二步 token 4 let token = JWT.sign(payload,secret,{expiresIn:"1h"}) 5 res.cookie("token",token); 6 res.cookie("user",username);