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

个人网站制作 Part 11 添加用户权限管理 | Web开发项目

文章目录

  • 👩‍💻 基础Web开发练手项目系列:个人网站制作
    • 🚀 添加用户权限管理
      • 🔨使用Passport.js
        • 🔧步骤 1: 修改Passport本地策略
      • 🔨修改用户模型
        • 🔧步骤 2: 修改用户模型
      • 🔨创建管理员账户
        • 🔧步骤 3: 创建管理员账户
    • 🚀 预览与保存
    • 🚀 下一步计划


👩‍💻 基础Web开发练手项目系列:个人网站制作

欢迎回到基础Web开发练手项目系列!

在前几篇博文中,我们已经创建了个人网站的基本结构、样式、导航栏、项目展示、联系信息、表单交互、动画效果、页面滚动效果、响应式设计、性能优化、页面动画、用户认证、数据库集成、电子邮件通知、社交媒体集成、博客功能和用户评论功能。

在本篇中,我们将学习如何添加用户权限管理,使你的网站更加安全。

在这里插入图片描述

🚀 添加用户权限管理

🔨使用Passport.js

🔧步骤 1: 修改Passport本地策略

server.js 文件中修改Passport本地策略,添加用户权限字段:

passport.use(new LocalStrategy(async (username, password, done) => {try {// 在数据库中查找用户const user = await User.findOne({ username });// 检查密码是否匹配if (!user || user.password !== password) {return done(null, false, { message: '用户名或密码错误' });}return done(null, user);} catch (error) {return done(error);}}
));

🔨修改用户模型

🔧步骤 2: 修改用户模型

server.js 文件中修改用户模型,添加权限字段:

const userSchema = new mongoose.Schema({username: String,password: String,role: { type: String, default: 'user' } // 默认角色为普通用户
});const User = mongoose.model('User', userSchema);

🔨创建管理员账户

🔧步骤 3: 创建管理员账户

server.js 文件中添加创建管理员账户的路由:

// 创建管理员账户
app.post('/create-admin', async (req, res) => {const { username, password } = req.body;try {// 检查是否已存在管理员账户const adminExists = await User.findOne({ role: 'admin' });if (adminExists) {return res.status(403).json({ message: '管理员账户已存在' });}// 创建管理员账户const admin = new User({ username, password, role: 'admin' });const savedAdmin = await admin.save();res.json(savedAdmin);} catch (error) {res.status(500).json({ message: error.message });}
});

🚀 预览与保存

确保保存所有文件并在浏览器中预览你的网站。你现在应该看到一个拥有用户权限管理功能的更加安全的个人网站了!

🚀 下一步计划

在下一篇文章中,我们将学习如何添加文件上传功能,使你的网站支持多媒体内容。记得继续关注本系列,为你的网站增添更多强大的功能!

通过这个项目,你已经学到了Web开发中许多重要的基础知识,并通过添加用户权限管理功能使你的网站更加安全可靠。祝你编码愉快,不断提升技能!

http://www.lryc.cn/news/320083.html

相关文章:

  • 百科源码生活资讯百科门户类网站百科知识,生活常识
  • Linux 用户和用户组管理
  • 【C++ 08】vector 顺序表的常见基本操作
  • Day67:WEB攻防-Java安全JNDIRMILDAP五大不安全组件RCE执行不出网
  • GCNv2_SLAM-CPU详细安装教程(ubuntu18.04)
  • 使用gitee自动备份文件
  • 智慧城市新篇章:数字孪生的力量与未来
  • python讲解(2)
  • 安卓安装Magisk面具以及激活EdXposed
  • C到C++的敲门砖-1
  • Qt文件以及文件夹相关类(QDir、QFile、QFileInfo)的使用
  • ChatGPT编程实现简易聊天工具
  • C#-用于Excel处理的程序集
  • HTTPS基础
  • 【Flink SQL】Flink SQL 基础概念(四):SQL 的时间属性
  • 文字弹性跳动CSS3代码
  • 前端小白的学习之路(事件流)
  • 电脑文件误删除如何恢复?分享三个简单数据恢复方法
  • MySQL实战:监控
  • MySQL自增主键自动生成的主键重置
  • reverse_iterator实现
  • C++:什么情况下函数应该声明为纯虚函数
  • 【全面了解自然语言处理三大特征提取器】RNN(LSTM)、transformer(注意力机制)、CNN
  • 区块链推广海外市场怎么做,CloudNEO服务商免费为您定制个性化营销方案
  • 【S5PV210】 | ARM的指令集合
  • 2024-3-17Go语言入门
  • AJAX-XMLHttpRequest
  • 【GPT-SOVITS-04】SOVITS 模块-鉴别模型解析
  • 论文阅读_时序模型_iTransformer
  • Docker 哲学 - 容器操作 -cp