当前位置: 首页 > 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.pierceye.com/news/164501/

相关文章:

  • 义乌个人兼职做建设网站做网站月收入多少
  • 福州网站seo优化公司徐州百度运营中心
  • 做网站需要用到ps吗中国十大最强装饰公司
  • 网站建设盈利去除wordpress rss图标
  • 网站策划书的基本内容东莞工程建设交易中心网
  • 免费推广网站入口2022静态网站开发外文文献
  • 如何做服装微商城网站建设网站开发设计中的收获
  • 网站开发详细设计文档模板网站建设设计工具
  • 网站建设项目资金申请wordpress主题美容
  • 专门做财经的网站软件开发都有哪些项目
  • 湛江网站制作多少钱建网站程序工具
  • 四川省乐山市建设银行网站一级门户网站建设费用
  • 六安网站制作哪里有网站备案网站
  • 石家庄手机网站建设公司wordpress媒体库难用
  • wordpress上传完了周口seo 网站
  • 广州网站建设技术方案建设宠物网站的目的
  • 邢台网站维护网络营销推广方法及分类
  • 做网站买过域名之后门户网站建设公司报价
  • 广告网站设计公司好吗重庆在线app
  • 深圳网站建设哪家公司便宜网站一般用什么语言做
  • 网站平台建设所需开发工具成都麦卡网络做网站开发怎么样
  • 可以做网站的电脑软件济南网页设计
  • 推广网站制作网站建设代理怎么做
  • 做网站页面遇到的问题网站规划设计的步骤
  • 请人做网站要多少钱做视频网站代码
  • 厦门建设网站的公司苏州外贸公司网站建设流程图
  • php做的静态网站怎么加密seo是什么工作
  • 溧水网站建设建立什么指标体系和评价程序规范
  • 怎样向顾客电销网站建设一号网站建设
  • 平陆县做网站移动网站开发的视频下载