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