token

本文介绍了Token在IT技术中的角色,特别是JSONWebToken(JWT)的用途,包括拦截无效请求、API授权和用户身份验证。文章详细讲解了如何在Express中使用JWT生成和验证Token的过程,以及相关的包安装和示例代码。
摘要由CSDN通过智能技术生成

token 令牌

  • Token 是什么
    • Token 本质是字符串,用于请求时附带在请求头中,校验请求是否合法及判断用户身份
  • Token 的用途主要有三点
    1. 拦截无效请求,降低服务器处理压力;
    2. 实现第三方 API授权,无需每次都输入用户名密码鉴权;
    3. 身份校验
  • express使用token步骤
    1. 安装第三方包
      • npm install jsonwebtoken -save
    2. 导入
      • const jwt = require('jsonwebtoken');
    3. 使用
      • 生成token
            let content ={name:req.body.name};
            // 要生成token的主题信息,可以是用户的id、用户名等唯一的标识名,
            //也可以是数据库自己的id(一般使用数据库自己的id即可),但不可以是用户的密码,
            //类型可以是对象或字符串
            let secret="syyyuigfrhygfgi" 
            // 这是加密的key(密钥),可以是任意的内容,但在开发中一般不写在代码中,而是一个文件
            let token = jwt.sign(content, secret, {
                expiresIn: 60*60*1  // 1小时过期
            });
            //调用jwt.sign方法生成token,前两个参数必传,第三个参数可不传
            //生成token后,将token放在要发给客户端的json格式的数据里面,
            //前端就可以获得token并存入localStorage了(在服务端也可以将token存到数据库里)
        
      • 验证token
            let token = req.body.token
            //获取前端发过来的token,如果没有token就返回需要登录的提示信息
            jwt.verify(token, secret, function (err, decode) {
                            if (err) {  //  时间失效的时候或者伪造的token          
                                res.send({'status':0});            
                            } else {
                                res.send({'status':1});
                            }
                        })
            //前两个参数必传,第三个参数可不传,
            //token为前端发过来的token,secret为之前自定义的密钥
            //jwt.verify()的返回值为对象或字符串,
            //jwt.sign()第一个参数是什么类型就返回什么类型,包含之前加密了的值,相当于解密,
            //可以将jwt.verify()的返回值打印出来看看
            //最后就可以根据jwt.verify()的返回值做相应的处理了
        
    const jwt = require('jsonwebtoken')
    const secret = 'first_token'; //自定义密匙
    
    const createToken = function (data) {
        let token = jwt.sign(data, secret, {
            expiresIn: 60 * 60 * 24 * 3 // 以s作为单位(目前设置的过期时间为3天)
        });
        return token;
    };
    //验证token
    const verToken = function (token) {
        console.log(token)
        return new Promise((resolve, reject) => {
            jwt.verify(token, secret, (error, decoded) => {
                if (error) {
                    reject({
                        info: 'token失效'
                    })
                }else{
                    resolve({
                        info: 'token有效'
                    })
                }
            });
        })
    }
    module.exports = {
        createToken,
        verToken
    };
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

苦逼的猿宝

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

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

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

打赏作者

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

抵扣说明:

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

余额充值