Как вы безопасно создаете администраторов для веб-приложения? - PullRequest
0 голосов
/ 26 июня 2019

Я сейчас на начальной стадии разработки веб-приложения, и у меня есть модель User, которая включает в себя поле isAdmin со значением по умолчанию false. Я запрещаю пользователям устанавливать это во время регистрации или редактирования профиля, выбирая, какие поля обновлять в маршрутах получения / размещения. Смотрите пример:

exports.editUser = async function(req, res, next) {
  try {
    const { dobYear, dobMonth, dobDay } = req.body;
    const dob = formatDob(dobYear, dobMonth, dobDay);

    const user = await db.User.findById(req.params.id); 
    const updates = pick(req.body, [ 'fullName', 'email', 'password', 'gender', 'address', 'avatar_url' ]);
    merge(user, updates, {dob});
    let updatedUser = await user.save();
    return res.status('200').json(updatedUser); 
  }

Сейчас я рассматриваю лучший способ создания или изменения пользователей-администраторов. Если я создам отдельный набор административных маршрутов для создания / изменения / и т. Д., В котором мы можем установить isAdmin на true, то любой, кто сможет угадать маршрут, сможет создать пользователя-администратора. Как это можно сделать безопасно?

Точно так же, есть некоторые вещи, которые я хочу, чтобы администраторы могли делать, что пользователи не могут. Буду ли я защищать эти маршруты с помощью отдельного промежуточного программного обеспечения, которое подтверждает, что они администраторы?

...