我有一个用SailsJS和mysql开发的应用程序。只有登录用户才能创建新用户。在开发阶段,我通过对服务器的简单请求使创建第一个用户变得容易。然而,这又是不可行的,因为我已经写了一些政策代码来防止这种情况。
module.exports= async function(req, res, proceed){
const adminId = req.param('adminId');
if(!adminId){
return res.status(401).json({status: 401, message: 'Unauthorized access, invalid user'});
}
//let's check if the user has a role as superadmin
const superAdmin = await Admin.findOne({id: adminId, superAdmin: true});
console.log(superAdmin)
if(superAdmin){
return proceed();
}
else{
return res.status(401).json({status: 401, message: "Unauthorized access. You don't have this privilege"})
}
}
此外,每个保存的新用户在 mysql 数据库中都有一个强制性的 createdBy 列。
我目前想在生产环境中托管该项目。我应该采取什么最佳方法。默认情况下,我应该运行
sails lift --prod
在生产环境中生成 mysql 表。但是,我将无法登录或创建管理员用户。那么,创建新用户的最佳方式是什么?
"最佳"方式显然是主观的。 就个人而言,我会编写一个迁移来引导第一个生产用户的数据库(您正在使用迁移,对吧?
有些人避免在迁移中包含 DML,尽管根据我的经验,在正在开发的应用程序的长生命周期中的某个时刻,需要发生某种类型的"数据修复"。 在迁移中尽可能幂等地执行此操作是最简单、最可靠的方法。