NodeJS使用JWT跨域身份验证方案详解

 更新时间:2023年02月06日 09:11:00   作者:碰磕  
JWT是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准,其组成部分为Header、Payload、Signature.Payload部分才是真正的用户信息,它是用户信息经过加密之后生成的字符串,Header和Signature是安全性相关的部分,只是为了保证token的安全性

JWT(jsonwebtoken)

目前最流行的跨域身份验证解决方案

在nodejs中使用

安装

npm install jsonwebtoken --save

使用

1.在路由中引入

var jwt = require('jsonwebtoken');

2.定义一个密钥

const secret = 'nidemiyao'//用于加密

3.定义生成token的函数

	//生成token
//info也就是payload是需要存入token的信息
	function createToken(info) {
	    let token = jwt.sign(info, secret, {
	        //Token有效时间 单位s
	        expiresIn:60 * 60*24
	    })
	return token
}

4.定义验证token的函数

//验证Token
function verifyToken(token) {
    console.log(token)
    return new Promise((resolve, reject) => {
      jwt.verify(token, secret, (error, result) => {
            if(error){
                reject(error)
            } else {
                resolve(result)
            }
      })
    })
}

5.可以设置白名单

定义一下

//白名单
const whiteList = ['/manage/login']

6.使用

路由名.use((req,res,next) => {
    if(!whiteList.includes(req.url)) {
    	//判断请求头是否携带正确的token
        verifyToken(req.headers.authorization).then(res => {
            next()
        }).catch(e => {
            res.status(401).send('403')//验证失败返回什么
        })
    } else {
        next()
    }
})

场景

常用于登录

通过创建密钥返回给前台,前台进行一个本地保存,再在封装请求中添加该请求头token…即可实现加密!!!

//登陆
路由名.post("/manage/login",(req,res)=>{
    let {user}=req.body;
        let sql=`select *from admin where uname='${user.username}' and upassword='${user.password}'`;
        conn.query(sql,(err,result,fields)=>{
            if(err){
                return "失败";
            }
            console.log(result)
            if(result.length!==0){
                let token =createToken(user)
                res.send({"result":result,"token":token});
            }else{
                res.send({"result":result});
            }
        })
});

这样就实现简单的使用了~

到此这篇关于NodeJS使用JWT跨域身份验证方案详解的文章就介绍到这了,更多相关NodeJS JWT内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • nodejs中用npm初始化来创建package.json的实例讲解

    nodejs中用npm初始化来创建package.json的实例讲解

    今天小编就为大家分享一篇nodejs中用npm初始化来创建package.json的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10
  • Node.js中常用设计模式的使用方法总结

    Node.js中常用设计模式的使用方法总结

    设计模式是由经验丰富的程序员在日积月累中抽象出的用以解决通用问题的可复用解决方案,它提供了标准化的代码设计方案提升开发体验,本文主要来和大家讨论一下Node.js中设计模式的重要性并提供一些代码示例,感兴趣的可以了解下
    2023-10-10
  • 你应该知道的几类npm依赖包管理详解

    你应该知道的几类npm依赖包管理详解

    npm 是node.js 里的包管理器,是一个命令行工具,下面这篇文章主要给大家介绍了关于你应该知道的几类npm依赖包管理,文中通过示例代码介绍的非常详细,需要的朋友可以参考借鉴,下面随着小编来一起学习学习吧。
    2017-10-10
  • NodeJs之word文件生成与解析的实现代码

    NodeJs之word文件生成与解析的实现代码

    这篇文章主要介绍了NodeJs之word文件生成与解析的实现代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Nodejs使用Mongodb存储与提供后端CRD服务详解

    Nodejs使用Mongodb存储与提供后端CRD服务详解

    这篇文章主要给大家介绍了关于Nodejs使用Mongodb存储与提供后端CRD服务的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2018-09-09
  • node.js中module模块的功能理解与用法实例分析

    node.js中module模块的功能理解与用法实例分析

    这篇文章主要介绍了node.js中module模块的功能理解与用法,结合实例形式分析了node.js module模块的基本功能、原理、用法及相关操作注意事项,需要的朋友可以参考下
    2020-02-02
  • ExpressJS入门实例

    ExpressJS入门实例

    这篇文章主要介绍了ExpressJS入门实例,本文讲解了创建项目、进入目录、安装项目依赖的包、创建应用程序、运行程序等内容,需要的朋友可以参考下
    2015-01-01
  • node.js结合webSocket实现聊天室

    node.js结合webSocket实现聊天室

    于Node.js和WebSocket的聊天室,主要包括前端页面,主要是用户操作的页面,还包括后台数据通信以及逻辑处理,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • 详解用node搭建简单的静态资源管理器

    详解用node搭建简单的静态资源管理器

    本篇文章主要介绍了详解用node搭建简单的静态资源管理器,主要用node的fs模块,自己手写一个简单的静态资源管理器。有兴趣的可以了解一下
    2017-08-08
  • koa-router源码学习小结

    koa-router源码学习小结

    这篇文章主要介绍了koa-router源码学习小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09

最新评论