在 Web 应用程序中注册第一个管理员用户的最佳方式是什么?

问题描述 投票:0回答:1

假设一个新的 Web 应用程序正在部署到生产环境中。在企业系统中,通常会预先创建一个管理员用户,用于登录系统,然后创建其他管理员和用户。我想知道创建第一个超级管理员用户的最佳方法是什么。我们可以在第一次运行时通过代码创建它,但这意味着至少开发团队中的某些人可以访问凭据(开发人员/devOps/运营)。有没有什么办法可以让除了系统的客户/超级管理员之外没有人获得凭据?

security web-applications production-environment
1个回答
3
投票

我认为预先创建的路线是最好的选择。 但另一种方法是在管理员注册逻辑中添加条件。 通过询问假设的超级管理员他将使用什么电子邮件,如果满足该条件,您应该能够将超级管理员角色分配给他。 如果你已经在数据库模型中为用户设置了某种角色属性,或者可能是一个成熟的 RBAC 系统(基于角色的访问控制)

(我假设语言是 javascript(express 和 mongoose),尽管有一种方法可以用其他语言实现):

// request response cycle
async (req, res) => {
//  destructure req body
const {name, email, password, role} = req.body
try {
    // check if user already exists
   let user = await User.findOne({email})
   if(user) {
       return res.status(400).json({errors: [{msg: 'Invalid registration 
details'}]})
   }
//    create new user in db
   user = new User({
       name,
       email,
       password,
       role
   })

// condition for assigning super admin role
if (email === 'super admin email address') {
  role === 'super admin'
}

根据您构建应用程序的方式,可能性是无限的。 我希望这会为你如何解决这个问题开辟思路。

编辑:一定要为密码创建一个散列函数,这样一旦超级管理员注册,密码就会立即被散列,因此无法访问。

© www.soinside.com 2019 - 2024. All rights reserved.