Сохранение этой информации в отображаемом имени пользователя может работать.Вы можете прочитать его оттуда в следующий раз и выполнить действие в клиентском коде вашего приложения.Но учтите, что это означает, что любой пользователь может изменить свою роль, поскольку он также может вызвать тот же код, чтобы обновить свой профиль .Если это не относится к вашему приложению, то этот подход звучит так, как будто он будет работать.
Если злоумышленники не смогут изменить свою роль, вам не следует устанавливать эту роль со стороны клиента.код приложения.В этом случае вы можете установить роль с сервера (или вашего компьютера для разработки, или облачных функций) с помощью Admin SDK.Поскольку Admin SDK работает в доверенной среде, он имеет расширенные привилегии и может обновить профиль любого пользователя .Таким образом, Admin SDK может обновлять отображаемое имя пользователя так же, как вы думаете.
Но это по-прежнему небезопасно, поскольку вы по-прежнему задаете свойство, которое каждый может изменить для своего собственногопрофиль.Опять же ... если это не проблема для вашего приложения, это нормально, но если сценарий использования требует, чтобы вы полагались на правильность свойства, мы должны продолжать искать в другом месте.
Admin SDKможет установить дополнительные так называемые утверждения для профиля пользователя , которые клиентский код не может изменить.Такие утверждения относятся к вещам, которые влияют на разрешения пользователя, например, если пользователь является администратором или к какой роли / группе принадлежат ваши пользователи.Это звучит довольно близко к тому, что вы описываете, поэтому также может быть использовано.И на этот раз только ваш код, работающий в доверенной среде, сможет это сделать.
Наконец, вы можете сохранить дополнительную информацию о пользователе в базе данных.Весьма распространено иметь в базе данных коллекцию (Users
или Profiles
), в которой вы храните документ для каждого пользователя (с именем документа User.uid
).Вы создаете документ при первом входе пользователя в систему и обновляете его по мере необходимости.Вы можете сделать это из кода на стороне клиента (если нет необходимости контролировать то, что пишется), или из кода, который выполняется в доверенной среде (такой как ваш компьютер для разработки, сервер, которым вы управляете, или облачные функции), если вынужно держать контроль.Большим преимуществом этого подхода является то, что все пользователи потенциально могут видеть информацию в этой коллекции, где SDK аутентификации на стороне клиента позволяет пользователю только читать свой собственный профиль пользователя.
Подробнее об этом см.