Я создаю API блога, используя node. Для аутентификации будет использоваться JWT с двумя ролями: администратор и пользователь.
Мой вопрос в том, какой подход я должен использовать, чтобы гарантировать, что только один администратор когда-либо будет зарегистрирован в базе данных?
Я думал об использовании следующего подхода: Первый пользователь, который зарегистрирует «admin» в качестве имени пользователя, будет администратором, и ему будут предоставлены все права администратора. Этому пользователю будет выдан токен с ролью администратора в полезной нагрузке при регистрации и последующих входах в систему.
Если другой пользователь попытается зарегистрироваться у администратора, это не сработает, потому что база данных будет искать администратора и снова отклонять повторную регистрацию пользователя с этим именем пользователя.
Подходит ли этот подход, или я упускаю из виду какой-либо недостаток, который позволил бы пользователю злонамеренно получить права администратора? Есть ли еще лучший подход?





Я бы снова поспорил с таким подходом, потому что если пользователь-администратор будет удален из базы данных и сервер будет перезапущен (что может произойти), то следующий новый зарегистрированный пользователь автоматически станет администратором.
Следующее, что статус администратора должен предоставляться ролью, а не именем пользователя.
Поэтому я бы порекомендовал, чтобы каждая регистрация могла создавать пользователя только с ролью user, таким образом нельзя создать администратора.
Я бы предварительно установил запись администратора в базе данных с некоторыми учетными данными для ведения журнала по умолчанию, а затем позволил бы ему / ей изменить (или заставить их) изменить эти учетные данные после входа в приложение.
Но никогда не давайте регистрационной форме / коду возможность (как бы случайным образом) создать нового пользователя-администратора.