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,因此把解密部分写在公共地方,中间件