JWT在Node中如何从认证、授权、安全性、跨域等方面全面应用?

2026-03-31 14:291阅读0评论SEO基础
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计1120个文字,预计阅读时间需要5分钟。

JWT在Node中如何从认证、授权、安全性、跨域等方面全面应用?

在Node.js中使用JWT的方法概述:

1. 安装库:首先,需要安装jsonwebtoken库,用于生成和验证JWT。

2.生成JWT:使用库中的方法,结合用户的身份信息,生成一个JWT。

3.存储JWT:通常将JWT存储在客户端,如cookie或localStorage。

4.验证JWT:在每次请求时,验证JWT的有效性,以确保用户身份的合法性。

具体步骤如下:

1. 安装jsonwebtoken库:

bash npm install jsonwebtoken

2. 生成JWT: javascript const jwt=require('jsonwebtoken');

const token=jwt.sign({ userId: 123 }, 'secretKey', { expiresIn: '1h' });

3. 存储JWT: 在客户端,可以使用localStorage或cookie来存储生成的JWT。

4. 验证JWT: 在服务器端,每次请求时验证JWT。 javascript const jwt=require('jsonwebtoken');

const verifyToken=(req, res, next)=> { const token=req.headers['authorization']; if (!token) return res.status(403).send('No token provided.');

jwt.verify(token, 'secretKey', (err, decoded)=> { if (err) return res.status(500).send('Failed to authenticate token.'); req.userId=decoded.userId; next(); }); };

希望这些信息对您有所帮助!

nodejs中要怎么使用jwt?下面本篇文章就来给大家从四个方面介绍一下jwt的使用,希望对大家有所帮助!

导语:由于nod… | =poad | 2021-10-15 | 1.0.1 | jwt appstore rator-core |安装jwt

我个人觉得这个jsonwebtoken很不错,本文就使用这个包。

npm i jsonwebtoken常见用法

  • 签名

签名语法jwt.sign(payload, secretOrPrivateKey, [options, callback])

例如:

// 一般签名 var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'secret'); // 加私钥签名 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'}); // 设置过期时间 jwt.sign({ data: 'bar' }, 'secret', { expiresIn: 60 * 60 }); // 1h

  • 验证

验证语法jwt.verify(token, secretOrPublicKey, [options, callback])

例如:

// 一般验证 var decoded = jwt.verify(token, 'secret'); console.log(decoded.foo) // bar // 公钥验证 var cert = fs.readFileSync('public.pem'); jwt.verify(token, cert, function(err, decoded) { console.log(decoded.foo) // bar });

  • 解码

解码语法jwt.decode(token [, options])

例如:

var decoded = jwt.decode(token, {complete: true}); console.log(decoded.header); console.log(decoded.payload);封装方法

根据安装配置里面的方法,可以根据自己的需要进行二次封装,更加适合自己的方法。

JWT在Node中如何从认证、授权、安全性、跨域等方面全面应用?

  • 引入依赖包和配置

const jwt = require("jsonwebtoken"); const config = { secret: '2021123456**', time: 60 * 60, }

  • 签名

function create (data, time) { let token = jwt.sign(data, config.secret, { algorithm: "HS256", expiresIn: time || config.time, }) return token; }

  • 验证

function verify (token) { return jwt.verify(token, config.secret, function (err, decoded) { if (err) { return { code: 1, msg: 'invalid', data: null, } } else { return { code: 2, msg: 'valid', data: decoded, } } }) }

  • 解码

function decoded (token, complete = true) { return jwt.decode(token, { complete, }); }

上面是比较简单的方法,如果你还想使用公钥私钥,可以用上面安装配置里面介绍的那样。

实战练习

经过上面的封装方法,可以来实战演练一下,是否有效。

  • 新建一个文件夹test,新建一个文件index.js用于存放测试案例,jwt.js用于存储调用方法。

mkdir test cd test npm init -y npm i jsonwebtoken

  • jwt方法

// jwt.js const jwt = require('jsonwebtoken'); const config = { secret: '2021123456', // 密钥 time: 60*60, // 过期时间 } // 创建签名令牌 function create (data, time) { let token = jwt.sign(data, config.secret, { algorithm: 'HS256', expiresIn: time || config.time, }); return token; } // 验证令牌 function verify (token) { return jwt.verify(token, config.secret, function (err, decoded) { if (err) { return { code: 1, msg: 'invalid', data: null, } } else { return { code: 2, msg: 'valid', data: decoded, } } }) } // 解码令牌 function decoded (token, complete = true) { return jwt.decode(token, { complete, }); } const token = { create, verify, decoded, } module.exports = token;

  • 创建token,验证token,解码token

// index.js const jwt = require('./jwt'); // 生成令牌 let token = jwt.create({'id': 1, 'name': 'mark'}, 60*60*2); console.log(token); /* eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpZCI6MSwibmFtZSI6Im1hcmsiLCJpYXQiOjE2MzkxMDYyNzMsImV4cCI6MTYzOTExMzQ3M30. 20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8 */ // 验证令牌 let verifyRes = jwt.verify(token); console.log(verifyRes); /* { code: 2, msg: 'valid', data: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 } } */ // 解码令牌 let deRes = jwt.decoded(token, true); console.log(deRes); /* { header: { alg: 'HS256', typ: 'JWT' }, payload: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 }, signature: '20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8' } */

运行一下命令node index.js测试是否正确。

好了,

标签:使用

本文共计1120个文字,预计阅读时间需要5分钟。

JWT在Node中如何从认证、授权、安全性、跨域等方面全面应用?

在Node.js中使用JWT的方法概述:

1. 安装库:首先,需要安装jsonwebtoken库,用于生成和验证JWT。

2.生成JWT:使用库中的方法,结合用户的身份信息,生成一个JWT。

3.存储JWT:通常将JWT存储在客户端,如cookie或localStorage。

4.验证JWT:在每次请求时,验证JWT的有效性,以确保用户身份的合法性。

具体步骤如下:

1. 安装jsonwebtoken库:

bash npm install jsonwebtoken

2. 生成JWT: javascript const jwt=require('jsonwebtoken');

const token=jwt.sign({ userId: 123 }, 'secretKey', { expiresIn: '1h' });

3. 存储JWT: 在客户端,可以使用localStorage或cookie来存储生成的JWT。

4. 验证JWT: 在服务器端,每次请求时验证JWT。 javascript const jwt=require('jsonwebtoken');

const verifyToken=(req, res, next)=> { const token=req.headers['authorization']; if (!token) return res.status(403).send('No token provided.');

jwt.verify(token, 'secretKey', (err, decoded)=> { if (err) return res.status(500).send('Failed to authenticate token.'); req.userId=decoded.userId; next(); }); };

希望这些信息对您有所帮助!

nodejs中要怎么使用jwt?下面本篇文章就来给大家从四个方面介绍一下jwt的使用,希望对大家有所帮助!

导语:由于nod… | =poad | 2021-10-15 | 1.0.1 | jwt appstore rator-core |安装jwt

我个人觉得这个jsonwebtoken很不错,本文就使用这个包。

npm i jsonwebtoken常见用法

  • 签名

签名语法jwt.sign(payload, secretOrPrivateKey, [options, callback])

例如:

// 一般签名 var jwt = require('jsonwebtoken'); var token = jwt.sign({ foo: 'bar' }, 'secret'); // 加私钥签名 var privateKey = fs.readFileSync('private.key'); var token = jwt.sign({ foo: 'bar' }, privateKey, { algorithm: 'RS256'}); // 设置过期时间 jwt.sign({ data: 'bar' }, 'secret', { expiresIn: 60 * 60 }); // 1h

  • 验证

验证语法jwt.verify(token, secretOrPublicKey, [options, callback])

例如:

// 一般验证 var decoded = jwt.verify(token, 'secret'); console.log(decoded.foo) // bar // 公钥验证 var cert = fs.readFileSync('public.pem'); jwt.verify(token, cert, function(err, decoded) { console.log(decoded.foo) // bar });

  • 解码

解码语法jwt.decode(token [, options])

例如:

var decoded = jwt.decode(token, {complete: true}); console.log(decoded.header); console.log(decoded.payload);封装方法

根据安装配置里面的方法,可以根据自己的需要进行二次封装,更加适合自己的方法。

JWT在Node中如何从认证、授权、安全性、跨域等方面全面应用?

  • 引入依赖包和配置

const jwt = require("jsonwebtoken"); const config = { secret: '2021123456**', time: 60 * 60, }

  • 签名

function create (data, time) { let token = jwt.sign(data, config.secret, { algorithm: "HS256", expiresIn: time || config.time, }) return token; }

  • 验证

function verify (token) { return jwt.verify(token, config.secret, function (err, decoded) { if (err) { return { code: 1, msg: 'invalid', data: null, } } else { return { code: 2, msg: 'valid', data: decoded, } } }) }

  • 解码

function decoded (token, complete = true) { return jwt.decode(token, { complete, }); }

上面是比较简单的方法,如果你还想使用公钥私钥,可以用上面安装配置里面介绍的那样。

实战练习

经过上面的封装方法,可以来实战演练一下,是否有效。

  • 新建一个文件夹test,新建一个文件index.js用于存放测试案例,jwt.js用于存储调用方法。

mkdir test cd test npm init -y npm i jsonwebtoken

  • jwt方法

// jwt.js const jwt = require('jsonwebtoken'); const config = { secret: '2021123456', // 密钥 time: 60*60, // 过期时间 } // 创建签名令牌 function create (data, time) { let token = jwt.sign(data, config.secret, { algorithm: 'HS256', expiresIn: time || config.time, }); return token; } // 验证令牌 function verify (token) { return jwt.verify(token, config.secret, function (err, decoded) { if (err) { return { code: 1, msg: 'invalid', data: null, } } else { return { code: 2, msg: 'valid', data: decoded, } } }) } // 解码令牌 function decoded (token, complete = true) { return jwt.decode(token, { complete, }); } const token = { create, verify, decoded, } module.exports = token;

  • 创建token,验证token,解码token

// index.js const jwt = require('./jwt'); // 生成令牌 let token = jwt.create({'id': 1, 'name': 'mark'}, 60*60*2); console.log(token); /* eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9. eyJpZCI6MSwibmFtZSI6Im1hcmsiLCJpYXQiOjE2MzkxMDYyNzMsImV4cCI6MTYzOTExMzQ3M30. 20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8 */ // 验证令牌 let verifyRes = jwt.verify(token); console.log(verifyRes); /* { code: 2, msg: 'valid', data: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 } } */ // 解码令牌 let deRes = jwt.decoded(token, true); console.log(deRes); /* { header: { alg: 'HS256', typ: 'JWT' }, payload: { id: 1, name: 'mark', iat: 1639106273, exp: 1639113473 }, signature: '20O1r0NVMf-j-9RwNcgls9ja0n1rGqSKN51_cRcvpE8' } */

运行一下命令node index.js测试是否正确。

好了,

标签:使用