📖Node使用jsonwebtoken制作一个会过期的token
那个后台管理的项目现在做到用户Token这一步了
这里使用的是 jsonwebtoken
1:安装 jsonwebtoken
npm i jsonwebtoken
Node.js 后端设置
1.创建新的 JS 文件
//token.js const jwt = require("jsonwebtoken");//引入jsonwebtoken const SECRETKEY = 'AEFU237AWSbsrfoif38fasj';//设置token私钥 function Tokenverify(token){//用来解密token return jwt.verify(token, SECRETKEY, function(err,decode){ if(err){ return false; }else {//这里可以用解密出来的信息去跟sql的信息做一下比较是否正确,我这里就不比较了 return decode; } }) } function Settoken(newobj){//创建新的Token,expiresIn为Token的过期时间,这里是10秒 return jwt.sign(newobj,SECRETKEY,{expiresIn:10}); } module.exports = {Tokenverify,Settoken}//暴露两个方法
//router.js const {Settoken} = require("./token/token.js")//引入方法 router.post("/userlogin",(req,res) => {//用户登录 let keysql ='select * FROM usertable where username = "'+req.body.from.name+'"';//查询该用户 conn.query(keysql,(e,r)=>{ if(e){ console.log(e) return e; } let base = Buffer.from(req.body.from.pass, 'base64')//解密密码 let pass = base.toString(); if(r.length > 0){//查询有无此用户 if(pass == r[0].password){//判断用户密码是否正确 let newobj = {id:r[0].id,account:r[0].account,password:r[0].password} let token = Settoken(newobj);//获取token let data={body:r[0],token:token} res.json(new Result({code:200,msg:'登录成功',data:data}))//返回Token }else{ res.json(new Result({code:500,msg:'密码错误!'})) } }else{ res.json(new Result({code:500,msg:'未检测到该用户!'})) } }) }) module.exports = {router} //暴露router
//app.js const {Tokenverify} = require("./token/token.js") const {router} = require('./router.js')//引入接口文件 let no_router = ['/userlogin']//白名单 app.use(async (req,res,next)=>{ if (no_router.indexOf(req.url) != -1) {//说明此为白名单不需要验证 直接走下一个路由 next(); }else if(req.method == 'OPTIONS'){ next(); }else if(Tokenverify(req.headers.token)){//验证用户token next();//用户Token没问题 }else{ res.send({//报错,用户Token过期 code: 4013, msg: '登陆信息失效,请重新登录' }) } })
🧐发表评论