我是一个使用express和mongoose进行后端开发的初学者,我正在创建一个只有一个管理员可以编辑、创建、删除文章的博客。
我正在创建一个博客,只有一个管理员可以编辑、创建、删除文章。我将如何处理管理员?是否可以为管理员创建一个mongoose模型,或者我可以将他的密码和用户名放在一个.env文件中,然后在登录路径中进行比较?
.env文件在生产过程中安全吗?客户端可以通过浏览器访问过程.env吗?
jsonwebtokens够不够认证,还是要用 passport.js?
如果你的博客只有你一个人使用,你当然可以用一个 env
文件来存储你的帐户和密码。
但是,如果你要做一个 "正常 "的应用程序,你应该在数据库中创建一个用户表,并使用认证机制来保证你的数据安全。
另外。jwt
通常用于验证RESTful接口,但也有许多其他的验证方法,如 sessionid
和 oauth
你应该根据你的需求选择合适的认证方式。
实现管理员很简单,如果你已经有了一个普通用户的模式,只需要添加一个指定是否为管理员的字段。
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()
}