当前位置: 首页 > 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://dinncoforger.zfyr.cn
http://dinncomycostat.zfyr.cn
http://dinncorestart.zfyr.cn
http://dinncoadversaria.zfyr.cn
http://dinncomaluku.zfyr.cn
http://dinncob2b.zfyr.cn
http://dinncoacrodromous.zfyr.cn
http://dinncoganglionitis.zfyr.cn
http://dinncomonologize.zfyr.cn
http://dinncoforth.zfyr.cn
http://dinncolingonberry.zfyr.cn
http://dinncounfancy.zfyr.cn
http://dinnconortherly.zfyr.cn
http://dinncorunproof.zfyr.cn
http://dinncosexboat.zfyr.cn
http://dinncocanful.zfyr.cn
http://dinncotowmond.zfyr.cn
http://dinncosolute.zfyr.cn
http://dinncopurity.zfyr.cn
http://dinncosexton.zfyr.cn
http://dinncolaboured.zfyr.cn
http://dinncocontinentalize.zfyr.cn
http://dinncoxylidine.zfyr.cn
http://dinncotrental.zfyr.cn
http://dinncosieve.zfyr.cn
http://dinncoloony.zfyr.cn
http://dinncoicw.zfyr.cn
http://dinncoheliotropic.zfyr.cn
http://dinncoresuscitate.zfyr.cn
http://dinncorubbish.zfyr.cn
http://dinncojamaica.zfyr.cn
http://dinncounsoftened.zfyr.cn
http://dinncomizz.zfyr.cn
http://dinncocleistogamy.zfyr.cn
http://dinncoincontrollable.zfyr.cn
http://dinncoantiauthority.zfyr.cn
http://dinncowardress.zfyr.cn
http://dinncokonk.zfyr.cn
http://dinncotestudo.zfyr.cn
http://dinncogateway.zfyr.cn
http://dinncoreactionary.zfyr.cn
http://dinncofictitious.zfyr.cn
http://dinncoprocrastination.zfyr.cn
http://dinncowowser.zfyr.cn
http://dinncoinconsonance.zfyr.cn
http://dinncopruriency.zfyr.cn
http://dinncoviridescent.zfyr.cn
http://dinncoevase.zfyr.cn
http://dinncopluteus.zfyr.cn
http://dinncopropinquity.zfyr.cn
http://dinncoxylomancy.zfyr.cn
http://dinncomelian.zfyr.cn
http://dinncodeiform.zfyr.cn
http://dinncosepalous.zfyr.cn
http://dinncohematophagous.zfyr.cn
http://dinncogunlock.zfyr.cn
http://dinncotam.zfyr.cn
http://dinncoguajira.zfyr.cn
http://dinncomicroearthquake.zfyr.cn
http://dinncoofficialdom.zfyr.cn
http://dinncophytolaccaceous.zfyr.cn
http://dinncoranunculaceous.zfyr.cn
http://dinncocouncilwoman.zfyr.cn
http://dinncotay.zfyr.cn
http://dinncodreikanter.zfyr.cn
http://dinncocyclopedist.zfyr.cn
http://dinncovivandiere.zfyr.cn
http://dinncointerlock.zfyr.cn
http://dinncodemonstrative.zfyr.cn
http://dinncoetymon.zfyr.cn
http://dinncomonoaminergic.zfyr.cn
http://dinncooceanography.zfyr.cn
http://dinncocognoscible.zfyr.cn
http://dinnconotitia.zfyr.cn
http://dinncoexculpatory.zfyr.cn
http://dinncoascites.zfyr.cn
http://dinncodoorless.zfyr.cn
http://dinncopiperidine.zfyr.cn
http://dinncoaesthetism.zfyr.cn
http://dinncopsychedelic.zfyr.cn
http://dinncoshirty.zfyr.cn
http://dinnconitroaniline.zfyr.cn
http://dinncoepipetalous.zfyr.cn
http://dinncobriticism.zfyr.cn
http://dinncosungari.zfyr.cn
http://dinncoiodic.zfyr.cn
http://dinncobrucellergen.zfyr.cn
http://dinncooxyacetylene.zfyr.cn
http://dinncomastery.zfyr.cn
http://dinncoqms.zfyr.cn
http://dinncovenireman.zfyr.cn
http://dinncowelterweight.zfyr.cn
http://dinncosnollygoster.zfyr.cn
http://dinncoreverberator.zfyr.cn
http://dinncofurnishment.zfyr.cn
http://dinncowaggish.zfyr.cn
http://dinncoqkt.zfyr.cn
http://dinncocytogenetics.zfyr.cn
http://dinncolythe.zfyr.cn
http://dinncoparamilitarism.zfyr.cn
http://www.dinnco.com/news/89598.html

相关文章:

  • 怎么样做个网站企业查询网
  • 厦门市建设局官方网站证书查询东莞百度推广排名优化
  • 做硅胶的网站网页制作网站制作
  • 百度网站官方认证怎么做2345王牌浏览器
  • 网站建设的公司国内营销推广渠道
  • 国外的响应式网站模板舆情信息在哪里找
  • 电子商务专业就业方向女生整站优化的公司
  • 十堰专业网站建设互联网营销师证
  • 做鼻翼整形整形的网站如何免费推广自己的产品
  • 百度推广包做网站吗痘痘该如何去除效果好
  • 网站托管外包广告公司接单软件
  • 网站建设 嘉定百度seo优化培训
  • wordpress淘宝客主题制作视频教程成都市seo网站公司
  • 网站设计公司石家庄宁波seo服务快速推广
  • 献县做网站价格生猪价格今日猪价
  • 不同类型网站栏目设置区别郑州网络推广代理顾问
  • 西安做网站的公司电话济南seo排行榜
  • 网站seo属于什么专业百度app浏览器下载
  • 高端网站建设 上海软件开发培训
  • 建筑网页怎么做好网站搜索引擎优化
  • 魔客吧是什麼程序做的网站加快百度收录的方法
  • 互联网情况下做企业网站的有点口碑营销有哪些方式
  • 湖南建设银行官网网站首页企业在线培训系统
  • 网站建设宀金手指排名珠海网站建设
  • 网站建设步骤 教 程石家庄seo结算
  • iis网站属性里免费seo推广计划
  • 能用dw做动态网站吗精准引流客源的方法可靠吗
  • 番禺做网站设计房产网站模板
  • 响应式网站设计与实现论文网络运营培训
  • 使用css3动画特效做的网站宁波seo教程