node JWT生成token 字符串和应用

@[TOC]JWT生成token 字符串和应用(个人学习笔记)

1.安装生成token字符串的包

jsonwebtoken官网

npm i jsonwebtoken

2.配置全局config文件(config.js)

module.exports = {
    // 加密和解密的token秘钥
    jwtSecretKey: 'advance8',
    // token有效期
    expiresIn: '12h'
}

3.导入jsonwebtoken包,并生成token返回客户端

// 导入生成token的包
const jwt = require('jsonwebtoken')
// 导入全局配置文件
const config = require('../config')
const { jwtSecretKey } = require('../config')

// 登录处理函数中
// 在服务器端生成token字符串
        // 删除用户的密码和头像信息
        const user = { ...result[0], password: '', user_pic: '' }
        // 对用户信息进行加密生成字符串
        const tokenStr = jwt.sign(user, jwtSecretKey, { expiresIn: config.expiresIn })
        res.send({
            status: 200,
            message: '登录成功',
            token: 'Bearer ' + tokenStr
        })

4.配置解析token

解析token中间件安装命令

npm i express-jwt

导入中间件和config配置文件(入口文件中配置)

// 在路由之前配置解析token的中间件
const expressJWT = require('express-jwt')
const config = require('./config')
// 注册为全局的 中间件 ,并指定加密和解密的值(jwtSecretKey),最后排除不需要认证的接口
app.use(expressJWT({secret: config.jwtSecretKey, algorithms:['HS256'] }).unless({ path: [/^\/api/] }))

// 定义错误级别中间件
app.use((err, req, res, next) => {
    if (err instanceof joi.ValidationError) {
        // 验证失败报错
        return res.cc(err)
    }
    // 身份认证失败错误
    if (err.name === 'UnauthorizeError') {
        return res.cc('身份认证失败')
    }
    // 未知错误
    res.cc(err)
})
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值