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身份验证内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
这篇文章主要介绍了Node Mongoose用法,结合实例形式分析了Mongoose使用、Schema、对象、model文档等基本原理、用法及操作注意事项,需要的朋友可以参考下2020-05-05
Node.js API详解之 string_decoder用法实例分析
这篇文章主要介绍了Node.js API详解之 string_decoder用法,结合实例形式分析了Node.js API中string_decoder的功能、用法及操作注意事项,需要的朋友可以参考下2020-04-04
Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法)
这篇文章主要介绍了Windows部署NVM并下载多版本Node.js的方法(含删除原有Node的方法),文中通过图文结合的方式讲解的非常详细,对大家了解Node.js有一定的帮助,需要的朋友可以参考下2025-01-01
Node.js(v16.13.2版本)安装及环境配置的图文教程
本文主要介绍了Node.js(v16.13.2版本)安装及环境配置的图文教程,文中通过图文介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2024-05-05
Windows系统下载、部署Node.js与npm环境的操作方法
本文介绍在Windows电脑中,下载、安装并配置Node.js环境与npm包管理工具的方法,文中通过图文结合的方式讲解的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下2025-01-01
node.js使用mongoose操作数据库实现购物车的增、删、改、查功能示例
这篇文章主要介绍了node.js使用mongoose操作数据库实现购物车的增、删、改、查功能,结合实例形式详细分析了node.js使用mongoose框架操作MongoDB数据实现购物车增删改查相关技巧与使用注意事项,需要的朋友可以参考下2019-12-12


最新评论