ari*_*ari 8 admin mongoose mongodb node.js
所以我有一个在 Nodejs 中开发的应用程序,并且正在使用 Mongodb/Mongoose 数据库。在应用程序旁边有一个管理面板,管理员可以在其中管理从普通用户添加的所有数据。
在用户架构中,我有以下内容:
role: {
type: String,
default: "user",
enum: ["user", "admin"]
},
Run Code Online (Sandbox Code Playgroud)
我的问题是添加一两个管理员用户的最佳/安全方式是什么,他们可以使用登录表单登录?
您可以使用脚本(例如 )seed.js来安全地插入所需数量的具有管理员角色的用户。
//seed.js
var User = require('../path/to/user.js');
var user = {
name: "Admin User",
email: "admin@gmail.com",
role: "admin"
}
User.create(user, function(e) {
if (e) {
throw e;
}
});
Run Code Online (Sandbox Code Playgroud)
在连接到 mongodb 后立即seed.js在您的server.js或脚本中添加 Require 。app.js完成播种后,注释或删除此行。
require('../path/to/seed');
Run Code Online (Sandbox Code Playgroud)
如果您想使用密码设置管理员,您可以定义一个文件夹,其中包含一些部署文件(您显然不想使用 cvs 跟踪这些文件)并将用户添加到 JSON 文件中:
mkdir .deploy
echo '.deploy' >> .gitignore
cd .deploy
touch users.json
Run Code Online (Sandbox Code Playgroud)
并在那里添加用户配置:
mkdir .deploy
echo '.deploy' >> .gitignore
cd .deploy
touch users.json
Run Code Online (Sandbox Code Playgroud)
然后在启动时的代码中,检查项目的文件系统中的users.json文件。如果存在,则创建新用户并将其删除,否则继续:
import fs from 'fs'
const User = require('../path/to/user.js');
const startup = () => {
const path = '/path/to/users.json'
fs.readFile(path, 'utf8', function (err, data) {
if (err) return console.error(err)
const usersConf = JSON.parse(data);
usersConf.users.forEach(user => User.create(user))
deleteUsers(path)
})
}
const deleteUsers = (path) => {
fs.unlink(path, (err) => {
if (err) console.error(err)
})
}
startup()
Run Code Online (Sandbox Code Playgroud)
当然,这也可以使用 async / await 来编写,以防止这些嵌套的回调。
你应该写一个检查,如果用户存在并忽略该用户,因为你可能会users.json在下次部署和更新时再次提供。
| 归档时间: |
|
| 查看次数: |
6472 次 |
| 最近记录: |