Я сейчас на начальной стадии разработки веб-приложения, и у меня есть модель 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
, то любой, кто сможет угадать маршрут, сможет создать пользователя-администратора. Как это можно сделать безопасно?
Точно так же, есть некоторые вещи, которые я хочу, чтобы администраторы могли делать, что пользователи не могут. Буду ли я защищать эти маршруты с помощью отдельного промежуточного программного обеспечения, которое подтверждает, что они администраторы?