首页 > 解决方案 > 我将如何处理 node.js 博客上的管理员?

问题描述

我是使用 express 和 mongoose 进行后端开发的初学者。

我正在创建一个只有一个管理员可以编辑、创建、删除帖子的博客。我将如何处理管理员?仅为管理员创建一个猫鼬模型是否有意义,或者我可以将他的密码和用户名放在 .env 文件中,然后在登录路径中进行比较?

.env 文件在生产期间是否安全?客户端可以通过浏览器访问 process.env 吗?

jsonwebtokens 是否足以进行身份​​验证,还是我应该使用 passport.js?

标签: node.jsexpressauthorizationadminproduction-environment

解决方案


实现 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()
    }

推荐阅读