vue项目,注册登录,登录完成后返回一个token
前提:注册,登录走通,vue、express、axios
登录成功后,给前端发送一个 user 对象,以及用jwt生成的token,作用:告诉服务端对应哪个数据
安装jwt: npm install jsonwebtoken
// jwt.sign。签名,第一个参数:用户id;第二个参数:密钥,保密的文件,全局唯一,用来加密(SECRET)
1 const token = jwt.sign({ 2 id:String(user._id) 3 },SECRET);
res.send({
user:user,
token:token
})
传给前台的token及user:
使用token:假设一个请求,token加在请求头中
this.$axios.get('/adadad', { headers:{ 'Authorization':'Bearer '+localStorage.getItem('token') } } ).then(res => { // console.log(res.data) })
服务端调用接口, console.log(req.headers.authorization) 得到token
// 验证,解密
get('/adadad',async (req,res) => { const raw = String(req.headers.authorization).split(' ').pop();// token // 验证解密 const tokendata = require('jsonwebtoken').verify(raw,SECRET) // 解密 const id = tokendata.id const user = await require('../../models/Users/user').findById(id) // 找用户 res.send(user) })
发送,返回得到用户信息:
需要登录的地方都需要token,因此把解密部分写在公共地方,中间件