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

成都平台网站开发公司格斗网页游戏大全

成都平台网站开发公司,格斗网页游戏大全,网址域名注册多少钱,上市网络公司排名身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制#xff0c;将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWT#xff08;Json Web Token#xff09; JWT是一种用于双方之间… 身份验证与授权是现代Web应用中不可或缺的部分。了解如何在Node.js应用中实施这些机制将使你能够构建更安全、更可靠的应用程序。本文将引导你通过使用JWT实现用户注册、登录和权限控制的过程。 JWTJson Web Token JWT是一种用于双方之间安全地传输信息的简洁的、URL安全的表示声明的方法。它由三部分组成头部Header、载荷Payload、签名Signature。 JWT的实现步骤 安装依赖 首先安装JWT相关的npm包 npm install jsonwebtoken --save创建JWT 在用户登录成功后你需要创建一个token发送给用户 const jwt require(jsonwebtoken);const user { id: user.id }; // 用户的唯一标识 const secret your_secret_key; // 保持安全的秘钥 const token jwt.sign(user, secret, { expiresIn: 1h }); // 有效期1小时验证JWT 创建一个中间件来验证每次请求的JWT function authenticateToken(req, res, next) {const authHeader req.headers[authorization];// 从请求头中获取authorization字段const token authHeader authHeader.split( )[1];if (token null) return res.sendStatus(401);// 如果没有token则返回401jwt.verify(token, your_secret_key, (err, user) {if (err) return res.sendStatus(403);// 如果token验证失败则返回403req.user user;next();}); }权限控制 使用前面创建的authenticateToken中间件来控制访问特定路由的权限 app.get(/protected, authenticateToken, (req, res) {res.json({ message: This is protected });// 这个路由现在受到保护只有带有有效JWT的请求才能访问 });结合Express MongoDB JWT 示例 准备工作 安装必要的npm包 npm install express mongoose4.4.0 jsonwebtoken bcryptjs body-parser --save这些包包括Express框架、MongooseMongoDB的ODM、jsonwebtoken用于JWT操作、bcryptjs用于密码加密和body-parser用于解析请求体。 启动MongoDB服务 确保MongoDB服务在本地运行或者你有一个MongoDB Atlas云服务的实例。 mongo开始 设置Express应用 const express require(express); // 引入express模块 const bodyParser require(body-parser); // 引入body-parser模块用于解析请求体 const mongoose require(mongoose); // 引入mongoose模块连接MongoDB const { register, login, authenticateToken } require(./controllers/authController); // 引入控制器const app express(); // 创建express应用 const PORT process.env.PORT || 3000; // 定义端口号app.use(bodyParser.json()); // 使用body-parser中间件解析JSON格式请求体 // 构建MongoDB连接的URL const url mongodb://localhost:27017/mydb; // 这里将地址和数据库名拼接在了一起 // 连接到MongoDB数据库 //mongoose.connect方法用于初始化数据库连接。 //它接受两个参数 //第一个参数是MongoDB的连接字符串 //第二个参数是一个选项对象 //这里使用了useNewUrlParser和useUnifiedTopology选项 //以使用新的URL解析器和驱动引擎这两个选项有助于避免一些常见的连接警告。 mongoose.connect(url, { useNewUrlParser: true, useUnifiedTopology: true }).then(() console.log(MongoDB connected)) // 连接成功后打印消息.catch(err console.log(err)); // 连接失败打印错误信息// 注册和登录路由 app.post(/register, register); app.post(/login, login);// 受保护的路由示例使用authenticateToken中间件保护 app.get(/protected, authenticateToken, (req, res) {res.json({ message: This is protected }); // 受保护的资源 });// 启动服务器 app.listen(PORT, () {console.log(Server is running on port ${PORT}); });创建User模型 在models/User.js中 const mongoose require(mongoose); // 引入mongoose模块// 定义用户模型的schema const userSchema new mongoose.Schema({username: { type: String, required: true, unique: true }, // 用户名必填唯一password: { type: String, required: true } // 密码必填 });// 导出模型 module.exports mongoose.model(User, userSchema);实现注册与登录逻辑 在controllers/authController.js中 const bcrypt require(bcryptjs); // 引入bcryptjs用于密码加密 const jwt require(jsonwebtoken); // 引入jsonwebtoken用于生成JWT const User require(../models/User); // 引入User模型// 注册逻辑 exports.register async (req, res) {const { username, password } req.body; // 从请求体获取用户名和密码const hashedPassword await bcrypt.hash(password, 10); // 对密码进行加密try {// 创建新用户并保存到数据库const newUser await User.create({ username, password: hashedPassword });res.status(201).json(newUser); // 发送201响应和新用户信息} catch (error) {res.status(500).json({ error: error.message }); // 发送500响应和错误信息} };// 登录逻辑 exports.login async (req, res) {const { username, password } req.body; // 从请求体获取用户名和密码const user await User.findOne({ username }); // 查找用户// 如果用户不存在或密码错误if (!user || !(await bcrypt.compare(password, user.password))) {return res.status(401).send(Invalid credentials); // 发送401响应}// 生成JWTconst token jwt.sign({ userId: user._id }, your_secret_key, { expiresIn: 1h });res.json({ token }); // 发送包含JWT的响应 };// JWT验证中间件 exports.authenticateToken (req, res, next) {const authHeader req.headers[authorization]; // 获取请求头中的authorization字段const token authHeader authHeader.split( )[1]; // 提取tokenif (!token) return res.sendStatus(401); // 如果没有token发送401响应// 验证tokenjwt.verify(token, your_secret_key, (err, decoded) {if (err) return res.sendStatus(403); // 如果验证失败发送403响应req.userId decoded.userId; // 将解码的用户ID添加到请求对象next(); // 调用下一个中间件}); };测试 使用Postman或任何API测试工具先调用/register端点注册新用户。使用注册信息调用/login端点你会收到一个JWT。尝试访问/protected端点把JWT添加到请求头中通常是Authorization: Bearer your_token。如果一切配置正确你应该能够访问受保护的路由。 http://localhost:3000/register http://localhost:3000/login 未加token访问http://localhost:3000/protected 加token访问http://localhost:3000/protected 总结 本文介绍了如何在Node.js应用中实现用户身份验证和授权特别是通过使用Node.js、Express和MongoDB实现JWT基于的身份验证和授权的全面指导包括注册、登录和访问受保护资源的流程。这为构建安全的Web应用程序奠定了坚实的基础。
http://www.zqtcl.cn/news/149679/

相关文章:

  • 企业网站的开发流程个人免费建网站
  • 旅游网站平台建设方案策划书wordpress 自建cdn
  • 网站开发回访话术内容电商网站有哪些
  • 网络广告投放网站网站如何做关
  • 葫芦岛住房和城乡建设厅网站野望王绩
  • 小说网站怎么做网站建设需求分析班级
  • 开设购物网站的方案网站免费seo
  • 免费手机h5模板网站模板下载wordpress所有插件
  • 北京做网站开发公司wordpress主题创建后门
  • 企业门户网站建设内容企业建设网站的功能是什么意思
  • 做a的网站有哪些在国外做网站推广
  • 做外贸网站设计上需要注意什么python做音乐网站
  • 英语门户网站织梦源码wordpress 推荐插件
  • 学做衣服网站有哪些网站建设算入会计分录
  • 京东网站开发技术织梦网站如何做404
  • 论坛类网站开发屏蔽wordpress缩略图
  • 南宁市两学一做网站logo设计网站官网
  • 中国建设工程造价管理协会网站查询网站开发者的设计构想
  • 华强北网站建设设计素材网站p开头的
  • 怎样让网站快速收录利用数据库修改wordpress密码
  • 网站建设群发广告词做网站首页多少钱
  • 黑彩网站建设中企动力 网站价格
  • 上海营销型网站报价深圳企业网站制作设计
  • 网站清理通知北京电商购物网站
  • 新开传奇网站180合击创建一个个人网站需要多少钱
  • 郑州建网站哪家好深圳企业网站制作公司介绍
  • 企业网站百度收录桂林网站建设价格
  • 砀山做网站的公司wordpress微视频主题
  • 免费的企业网站cms注册网站后邮箱收到邮件
  • 网站推广排名教程怀化职院网站