📖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: '登陆信息失效,请重新登录'
        })
    }
})

标签

🧐发表评论

您必须启用javascript才能在此处查看验证码