node.js - 我将如何处理 node.js 博客上的管理员?
问题描述
我是使用 express 和 mongoose 进行后端开发的初学者。
我正在创建一个只有一个管理员可以编辑、创建、删除帖子的博客。我将如何处理管理员?仅为管理员创建一个猫鼬模型是否有意义,或者我可以将他的密码和用户名放在 .env 文件中,然后在登录路径中进行比较?
.env 文件在生产期间是否安全?客户端可以通过浏览器访问 process.env 吗?
jsonwebtokens 是否足以进行身份验证,还是我应该使用 passport.js?
解决方案
实现 admin 非常简单;如果您已经有普通用户的架构,只需添加一个指定他们是否是管理员的字段:
const userSchema = new mongoose.Schema({
username:{
type: String,
...
},
password:{
type: String,
...
},
role: {
type: String,
default: 'user',
enum: ['admin', 'user']
}
})
然后,对于只有管理员可以执行的所有受保护路由(如编辑、创建等),在其前面放置一个中间件函数来检查用户的角色字段。
const restricted = (req, res, next) => {
if (user.role !== 'admin') { // assuming you pass user info
return res.status(403).json({
status: 'fail',
message: 'Unauthorized to access this route'
})
}
next()
}
推荐阅读
- javascript - 内容安全策略:页面设置阻止了资源的加载——仅在 Firefox 中?
- automated-tests - 赛普拉斯:摩卡自动化框架:自定义命令:自定义命令未运行未在测试中运行
- c# - .core 中的统一图标
- python - matplotlib中的文本框太小
- css - Bulma 获得自己的风格在 React.js 中不起作用
- python - 如何编写设备地址 28 46 04 1F 0D 00 00 74 = Sensor-1 like That for more than 10 sensor using Dictionary in python
- python - 如何在 Pygame 中交换图块(平铺地图)
- fullcalendar-5 - Chrome 91 版似乎在渲染完整日历 V5 时出现问题
- sql - 使用 for 循环选择表格的一部分并保存到文件
- javascript - 强制刷新参数filterable-ui vue