当前位置: 首页 > news >正文

宜春网站建设公司联系方式怎么进入公司网站

宜春网站建设公司联系方式,怎么进入公司网站,网上申报食品经营许可证流程,房地产网站建设案例在我们前面学习了 JWT认证机制在Node.js中的详细阐述 之后,今天来详细学习一下token是如何生成的,secret密钥的加密解密过程是怎么样的。 安装依赖 express:用于创建服务器jsonwebtoken:用于生成和验证JWTbody-parser&#xff1…

在我们前面学习了 JWT认证机制在Node.js中的详细阐述 之后,今天来详细学习一下token是如何生成的,secret密钥的加密解密过程是怎么样的。

安装依赖

  • express:用于创建服务器
  • jsonwebtoken:用于生成和验证JWT
  • body-parser:用于解析请求体中的数据
npm install express jsonwebtoken body-parser

设置密钥

SECRET_KEY:用于签名和验证JWT的密钥。请确保在生产环境中使用更安全的方式存储密钥。

// 密钥(请确保在生产环境中使用更安全的方式存储密钥)
const SECRET_KEY = 'your_secret_key';

中间件

bodyParser.json():解析请求体。
// 中间件:解析请求体
app.use(bodyParser.urlencoded({extended: false}))
authenticateJWT:验证JWT的中间件。如果验证失败,返回403状态码。
// 中间件:验证JWT
const authenticateJWT = (req, res, next) => {const token = req.headers.authorization;if (!token) {return res.sendStatus(403);}jwt.verify(token, SECRET_KEY, (err, user) => {if (err) {return res.sendStatus(403);}console.log(user, 'user')req.user = user;next();});
};

路由

/register:模拟用户注册并生成JWT。
// 路由:注册用户(示例,仅用于生成token)
app.post('/register', (req, res) => {const { username, password } = req.body;// 在实际场景中,您应该验证用户并存储其信息// 这里仅假设用户验证成功if (username && password) {// 通过jwt.sign() 生成JWT字符串,// 三个参数分别是:1-用户信息对象(不要把密码进行加密),2-加密密钥,3-配置对象 expiresIn-配置token有效期const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });res.json({message: 'User registered successfully',token: token});} else {res.status(400).json({ message: 'Invalid credentials' });}
});
/protected:受保护的路由,需要验证JWT才能访问。
// 路由:受保护的资源
app.get('/protected', authenticateJWT, (req, res) => {res.json({message: 'This is a protected route',user: req.user});
});

运行服务器

服务器在3000端口运行,你可以通过http://localhost:3000访问。

app.listen(port, () => {console.log(`Server is running on http://localhost:${port}`);
});

效果

在这里插入图片描述

在这里插入图片描述

完整代码

const express = require('express');
const jwt = require('jsonwebtoken');
const bodyParser = require('body-parser');
const app = express();
const port = 3000;
// 密钥(请确保在生产环境中使用更安全的方式存储密钥)
const SECRET_KEY = 'your_secret_key';
// 中间件:解析请求体
app.use(bodyParser.urlencoded({extended: false}))
// 路由:注册用户(示例,仅用于生成token)
app.post('/register', (req, res) => {const { username, password } = req.body;// 在实际场景中,您应该验证用户并存储其信息// 这里仅假设用户验证成功if (username && password) {// 通过jwt.sign() 生成JWT字符串,// 三个参数分别是:1-用户信息对象(不要把密码进行加密),2-加密密钥,3-配置对象 expiresIn-配置token有效期const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });res.json({message: 'User registered successfully',token: token});} else {res.status(400).json({ message: 'Invalid credentials' });}
});
// 中间件:验证JWT
const authenticateJWT = (req, res, next) => {console.log(req.headers, 'req.headers')const token = req.headers.authorization;if (!token) {return res.sendStatus(403);}console.log(token, 'token')jwt.verify(token, SECRET_KEY, (err, user) => {if (err) {return res.sendStatus(403);}console.log(user, 'user')req.user = user;next();});
};
// 路由:受保护的资源
app.get('/protected', authenticateJWT, (req, res) => {res.json({message: 'This is a protected route',user: req.user});
});
app.listen(port, () => {console.log(`Server is running on http://localhost:${port}`);
});

除了 jwt.verify进行token验证之外,还可以使用 express-jwt 中间件。

在Express应用中,express-jwt(现在通常称为express-jwt-ez,因为它是express-jwt的一个更现代、更轻量级的替代品)是一个中间件,用于验证JWT(JSON Web Tokens)。它会自动从请求中提取JWT,并使用提供的密钥或密钥函数来解密(验证)它。如果JWT有效,中间件会将解码后的负载(payload)附加到请求对象上,以便后续的处理程序(handler)可以使用。

安装express-jwt

npm install express-jwt

配置JWT中间件

// 配置JWT中间件
app.use(jwt({secret: SECRET_KEY,algorithms: ['HS256'] // 指定用于签名JWT的算法(这里使用的是HS256)
}).unless({path: ['/generate-token', /^\/public\//] // 指定哪些路径应该跳过JWT验证(例如,生成token的端点和公共资源的端点)
}));

需要注意的是,在使用此方法进行token校验时,Authorization 的value指前面需要包含"Bearer "字符串。

完整代码

const express = require('express');
const expressjwt = require('express-jwt');
const jwt = require('jsonwebtoken');
const app = express();
const port = 3000;
// 密钥(请确保在生产环境中使用更安全的方式存储密钥)
const SECRET_KEY = 'your_secret_key_here';
// 中间件:解析请求体
app.use(bodyParser.urlencoded({extended: false}))
// 配置JWT中间件
app.use(expressjwt({secret: SECRET_KEY,algorithms: ['HS256'] // 指定用于签名JWT的算法(这里使用的是HS256)
}).unless({path: ['/generate-token', /^\/public\//] // 指定哪些路径应该跳过JWT验证(例如,生成token的端点和公共资源的端点)
}));
// 路由:生成JWT(这个端点不需要JWT验证)
app.post('/generate-token', (req, res) => {const { username } = req.body;if (!username) {return res.status(400).json({ message: 'Username is required' });}// 生成JWT(在实际应用中,你可能还会包含其他信息,如用户ID、角色等)const token = jwt.sign({ username }, SECRET_KEY, { expiresIn: '1h' });res.json({message: 'Token generated successfully',token: token});
});
// 路由:受保护的资源(这个端点需要JWT验证)
app.get('/protected', (req, res) => {// 如果JWT验证成功,req.auth 将包含解码后的负载(payload)const { username } = req.auth;res.json({message: 'This is a protected route',user: {username: username}});
});
app.listen(port, () => {console.log(`Server is running on http://localhost:${port}`);
});
http://www.yayakq.cn/news/776893/

相关文章:

  • 前端做网站框架怎么做棋牌网站
  • 建设网站呼叫中心有什么好处房地产网站素材
  • 西安网站建设全包建站公司用哪家服务器
  • 最简单网站建设佛山企业网站开发
  • 商城类网站和o2o网站建站工具包
  • 免费做淘宝联盟网站新浪的网络营销方式
  • 京东如何进行网站建设青岛公司网站建设开发
  • 设计logo网站免费下载云南企业建站
  • 公司网站建设怎么入账浙江省建设监理协会管网站
  • 网站建设如何加入字体pc网站 公众号数据互通
  • 网站做直播wordpress 添加主题编辑器
  • 中国版动漫网站模板建网站比较好
  • 宁波网站优化服务版式设计作品集
  • 老板说做个网站我要怎么做有免费制作单页的网站吗
  • html购物网站模板下载注册规划师好考吗
  • 如何给网站添加音乐wordpress 关键词插件
  • 企业门户网站制作网页设计模板代码网站
  • 网站建设培训个人建筑网站、
  • 鞋子网站模板无锡做百度网站
  • 书店建设网站的能力重庆建网站公司
  • 网站如何在工信部备案信息有经验的南昌网站设计
  • asp 网站销售管理软件新技术
  • 摄影网站开题报告设计公司名字怎么取
  • 烟台网站建设企业中国114企业网
  • 外贸网站个人简介建了一个网站 如何找到放图片的文件夹
  • 三亚做网站服务长沙市房产交易中心官网
  • 空壳网站清理Wordpress手机端显示不全
  • 北京网站建设公司服务有哪些做网站六安
  • 做网站 蓝洋网站建设与管理课程介绍
  • 南昌网站建设_南昌做网站公司删掉wordpress主题