一、身份验证流程
1、用户向服务器发送用户名和密码。
2、服务端收到请求,去验证用户名与密码
3、验证成功后,服务端会签发一个 Token,将这个 Token 发送给客户端。
4、客户端收到 Token 以后可以把它存储起来,放在 Cookie 里或者 Local Storage 里
5、用户随后的每一次请求,都会通过 Cookie,将 token 传回服务器。
6、服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
二、验证的用法
1、下载安装(如果已经安装则不需要此操作)
cnpm install jsonwebtoken
2、引入jwt(jsonwebtoken)
const jwt = require("jsonwebtoken") ;
3、验证成功后生成一个token值
let token = jwt.sign({username},'signature',{expiresIn:'1h'}) ;
//sign后面的三个参数分别是需要存储的信息,签名(最好用sha256加密后再用),过期时间
4、发送至客户端
res.cookie("token",token) ;
//"token"(这里不要用token,一般情况下需要先进性加密处理)为name值;token为value值
5、验证token
const islogin = (req,res) => {
let{token} = req.body ;
//解构赋值,获取请求的信息
jwt.verify(token,'signature',function(err,decoded){
//verify特定的验证方法(三个参数:请求的token,验证token是否是当前的token,函数体返回信息)
if(!err){
//如果token不存在进入
res.json({
... ...
}
})
}else{
//否则,token存在进入
res.json({
... ...
}
})
}
})
}
6、最后将返回值导出
module.exports = {
islogin
}