node.js实现token身份验证的示例代码

 更新时间:2022年02月09日 09:09:47   作者:萝卜砸大坑  
本文主要介绍了node.js实现token身份验证的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

安装依赖 express-jwt

npm i express-jwt

将token校验相关数据导入配置文件

// setting.js
module.exports = {
    token: {
        // token密钥
        signKey: 'blog_globM_token_key_$$$$',
        // 过期时间
        signTime: 3600 * 24 * 3,
        // 请求头参数
        header: 'authorization',
        // 不用校验的路由
        unRoute: [
            { url: '/login', methods: ['POST']},
            { url: '/register', methods: ['POST']}
        ]
    }
}

token配置文件(加密/解密)

// verify.js
const jwt = require('jsonwebtoken')
const setting = require('../setting')

const verify = {
    // 设置token
    setToken(email,_id){
        return new Promise(resolve => {
            let token = jwt.sign(
                // 存储数据,自定义
                { email,_id },
                // 密钥
                setting.token.signKey,
                // 过期时间
                { expiresIn: setting.token.signTime}
            )
            resolve(token)
        })
    },
    getToken(token){
        return new Promise((resolve, reject) => {
            // 判断token是否存在,这里是根据空格分割
            if(!token.split(' ').length){
                reject({error: 'The token value is empty'})
            }else{
                // 解密token并返回数据
                let data = jwt.verify(token.split(' ')[1],setting.token.signKey)
                resolve(data)
            }
        })
    }
}

module.exports = verify

主文件导入(app.js)

const expressJwt = require('express-jwt')
// 导入配置文件
const setting = require('./setting')
// 导入token校验文件
const verify = require('./public/verify')

// 解析token获取用户信息
app.use((req, res, next) => {
    // 获取请求头中的参数
    let token = req.headers[setting.token.header]
    if(token === undefined){
        return next()
    }else{
        // token校验并将校验结果保存至请求头中
        verify.getToken(token).then(data => {
            req.data = data
            return next()
        }).catch(_ =>{
            return next()
        })
    }
})
//验证token是否过期并规定哪些路由不用验证
app.use(expressJwt({
    secret: setting.token.signKey
}).unless({
    //除了这个地址,其他的URL都需要验证
    path: setting.token.unRoute 
}))
//当token失效返回提示信息
app.use((err, req, res, next) => {
    if (err.status === 401) {
        return res.status(err.status).json({
            status: err.status,
            msg: 'The token is invalid',
            error: err.name + ':' + err.message
        })
    }
})

接口中使用

const verify = require('../public/verify')
const setting = require('../setting')

// 生成token
verify.setToken(response.email,userData._id).then(token => {
    return res.json({
        status:0,
        msg:'success',
        token,
        signTime: setting.token.signTime
    })
})
// token 数据存储在req.data中
response.author = req.data._id

接口调用
headers 中传参,key: Authorization,value: 'Bearer ’ + token
Authorization : 'Bearer ’ + token

// axios
config.headers['Authorization'] = 'Bearer ' + token

到此这篇关于node.js实现token身份验证的示例代码的文章就介绍到这了,更多相关node.js token身份验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • NodeJs测试框架Mocha的安装与使用

    NodeJs测试框架Mocha的安装与使用

    本文全面介绍如何使用Mocha,让你轻松上手。如果你以前对测试一无所知,本文也可以当作JavaScript单元测试入门。
    2017-03-03
  • NodeJS基础API搭建服务器详细过程记录

    NodeJS基础API搭建服务器详细过程记录

    本文将以一个超小型web项目,来详细介绍如何使用NodeJS基础的http, fs, path, url等模块提供的API来搭建一个简单的web服务器。具有很好的参考价值。下面跟着小编一起来看下吧
    2017-04-04
  • express中间件加载机制示例详解

    express中间件加载机制示例详解

    中间件是一种方法,可以接收客户端发来的请求,可以对请求做出响应,也可以将请求继续交给下一个中间件继续处理,下面这篇文章主要给大家介绍了关于express中间件加载机制的相关资料,需要的朋友可以参考下
    2022-08-08
  • Nodejs之TCP服务端与客户端聊天程序详解

    Nodejs之TCP服务端与客户端聊天程序详解

    这篇文章主要为大家详细介绍了Nodejs之TCP服务端与客户端聊天程序,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-07-07
  • nodejs 整合kindEditor实现图片上传

    nodejs 整合kindEditor实现图片上传

    这篇文章主要介绍了nodejs 整合kindEditor实现图片上传,需要的朋友可以参考下
    2015-02-02
  • 使用Raygun对Node.js应用进行错误处理的方法

    使用Raygun对Node.js应用进行错误处理的方法

    这篇文章主要介绍了使用Raygun对Node.js应用进行错误处理的方法,Node.js是一款用于服务器端的JavaScript框架,需要的朋友可以参考下
    2015-06-06
  • Node.js包管理工具

    Node.js包管理工具

    本文主要详细介绍了node包管理工具,主要介绍了npm,cnpm及yarn,文中有详细的代码示例,对学习具有一定参考价值,需要的朋友可以参考一下
    2023-04-04
  • node.js之基础加密算法模块crypto详解

    node.js之基础加密算法模块crypto详解

    这篇文章主要介绍了node.js之基础加密算法模块crypto详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • electron demo项目npm install安装失败的解决方法

    electron demo项目npm install安装失败的解决方法

    下面小编就为大家分享一篇electron demo项目npm install安装失败的解决方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-02-02
  • node实现简单的增删改查接口实例代码

    node实现简单的增删改查接口实例代码

    在本篇文章里小编给大家整理的是关于node实现简单的增删改查接口的相关实例内容,有需要的朋友们可以学习下。
    2019-08-08

最新评论