Nodejs的Token生成与验证

首先安装模块  npm i jsonwebtoken -S

const jwt = require('jsonwebtoken');//token
const { secretOrPrivateKey } = require('../config/conf');//签名  自己定义

//登录接口
router.post('/login',(req,res)=>{
	let { uname,upwd } = req.bosy; //获取前端传过来的用户名和密码
	User.find({uname:uname}, function(error, result){  //先查询用户名
		if(error){
			res.json({code:0,msg:error.message})
		}else{
			if(result.length == 0){ //未查到
				res.json({code:0,msg:'该用户不存在'})
			}else{
				if(upwd == result[0].upwd){  //判断密码
					let content = {uname:uname};//生成token主体信息
					let token = jwt.sign(content, secretOrPrivateKey, {
						expiresIn: 3600  // 1小时过期  以秒为单位
					});
					res.json({code:1,msg:'登录成功',token:token})
				}else{
					res.json({code:0,msg:'密码错误'})
				}
			}
		}
    })
})

//其他接口验证
//前端将token存储在loacalStorage中  
//请求接口时放在请求头Authorization中携带
//后端通过读取Authorization获取前端传过来的token进行验证,验证通过再进行数据库操作
router.get('/find',(req,res)=>{
	let token = req.get("Authorization"); // 从Authorization中获取token
    jwt.verify(token, secretOrPrivateKey, (err, decode)=> {
        if (err) {  //时间失效的时候 || 伪造的token
            res.send({code:0,msg:'token已失效'});
        } else {
			User.find({}, function(error, result){
			    error? res.json({code:0,msg:'查询失败'}) : res.json({code:1,data:result})
			})
        }
    })
})


 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

前端薛小帅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值