Token的使用

token可以理解成唯一的身份标识
 
1:安装生成token的包
 
npm install jsonwebtoken --save
 
2:引入
var jwt = require("jsonwebtoken")
 
3:生成token
key:自定义
var token =jwt.sign(对象,"key",{ expiresIn: 60*60*1 // 1小时过期 })
 
完整的代码       在登录的接口 生成一个token,并把这个token返回给login的页面
router.post("/login",(req,res,next)=>{
  let  {username,userpwd}=req.body;
  //去验证用户名和密码是否匹配
  let md5 = crypto.createHash("md5");
  userpwd = md5.update(userpwd).digest("hex");

   let  token = jwt.sign({//就一个令牌(指纹)
     userid:1,
     username,
     type:1
   },"abc",{
     expiresIn:60*30
   })

  res.json({
    code:1,
    msg:"ok",
    token
  })


});

 

 let token = jwt.sign({//就一个令牌(指纹)
    userid: 1,
    username,
    type: 1
  }, "abc", {
      expiresIn: 6 * 3
    })

把token返回给login的页面

res.json({
    code:1,
    msg:"ok",
    token
  })

 

 

 
 
 
 
 
4:使用token
登录成功以后 把token在页面做保存 保存在localStorage里面
 
 
 
5:客户端每次向服务端请求资源的时候需要带着服务端签发的 Token  .
接口使用   需要带头部设置  并把存在localStorage里面的token取出来传给相应的接口   接口的路径为“checktoken”
headers:{
token:token
}
 $("#btn").click(()=>{
        $.ajax({
            type:"get",
            url:"checktoken",
            headers:{
                token:window.localStorage.getItem("token")
            }
        }).then(res=>{
            console.log(res);
        })

    })

 

6:token由前端传过来 接口需要接受 ,要用  let token = req.headers.token; 
服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
后台接受验证接口安全是否合法   jwt.verity
router.get("/checktoken",(req,res,next)=>{
    let token  = req.headers.token;
    jwt.verify(token,"abc",(err,info)=>{
        if(err){
            res.json({
              code:0,
              msg:"token解析失败 权限异常"
            })
        }else{
          res.json({
            code:1,
            msg:"解析成功",
            info
          })

        }

    })


})

 

 
 
 
 
 
posted @ 2021-08-31 19:57  JSkolo_yyds  阅读(538)  评论(0编辑  收藏  举报