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 实现MQTT协议的服务器端和客户端的双向交互的过程
这篇文章主要介绍了nodejs 实现MQTT协议的服务器端和客户端的双向交互的过程,本文通过示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧2023-11-11node-webkit打包成exe文件被360误报木马的解决方法
这篇文章主要介绍了node-webkit打包成exe文件被360误报木马的解决方法的相关资料,需要的朋友可以参考下2015-03-03Nodejs进阶:基于express+multer的文件上传实例
本篇文章主要介绍了基于express+multer的文件上传实例,现在分享给大家,也给大家做个参考,感兴趣的小伙伴们可以参考一下。2016-11-11Nodejs使用fs-extra模块进行目录和文件操作用法示例
fs-extra模块是基于fs 的文件操作相关工具库,封装了一些fs实现起来相对复杂的工具,下面这篇文章主要给大家介绍了关于Nodejs使用fs-extra模块进行目录和文件操作用法的相关资料,需要的朋友可以参考下2024-06-06
最新评论