2017-01-07 1 views
2

ОбзорКак сохранить полное имя пользователя вместо адреса электронной почты в Auth0?

Когда пользователь подпишется на наши услуги с помощью внешнего провайдера авторизации, таких как Google или Facebook, то имена пользователей хранятся, как и следовало ожидать в поле Auth0 «имя». Однако, когда пользователь подписывается с использованием своего адреса электронной почты, их адрес электронной почты сохраняется в поле «имя».

Мы хотим, чтобы настоящее имя пользователя всегда было в поле «имя», чтобы упростить интеграцию с другими сторонними службами.

Исследование

Из документов: https://auth0.com/docs/metadata

Auth0 позволяет хранить метаданные, или данные, относящиеся к каждому пользователю, что не пришло от поставщика удостоверений. Существует два вида метаданных :

user_metadata: сохраняет пользовательские атрибуты (например, пользовательские настройки), которые не влияют на основные функции пользователя; app_metadata: хранит информацию (например, план поддержки пользователя, роли безопасности или доступ к группам управления ), которые могут влиять на основные функции пользователя, такие как , как работает приложение или что пользователь может получить.

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

Вопрос из официальных форумов: https://auth0.com/forum/t/editing-user-name/2944

Пользователь спрашивает:

Если я храню пользователь в базе данных Auth0, является его действительно не представляется возможным установить их имена реальных ? Похоже, он принимает только адрес электронной почты .

И получает ответ:

Можно хранить эту или любую другую информацию в соответствии с app_metadata или user_metadata. Вы можете изменить эту информацию через приборную панель, правила или API: https://auth0.com/docs/api/management/v2#!/Users/patch_users_by_id

В принципе, не кажется, нет нигде в документации или на форуме о том, как решить эту проблему.

Мы наконец-то придумали способ вернуть реальное имя пользователя с профилем пользователя. Я разместил здесь ответ, чтобы облегчить жизнь другим разработчикам, если столкнетесь с этой проблемой.

ответ

1

Решение

В принципе, если добавить свойство «имя» в app_metadata для пользователя, то Auth0 будет использовать это значение в качестве имени пользователя, как на приборной панели и при возвращении профиля пользователя с помощью запрос GET.

Пример JSON:

"app_metadata": { 
    "name": "Sam Murray", 
    // Any other properties that you want to store 

} 
+0

все еще в этом не желательно, поскольку нам нужно установить имя пользователя в корневой части модели пользователя не в app_metadata или user_metadata – ANinJa

1

Я считаю, что первое имя и фамилия имеют бен амортизируется, помимо основной полой аутентификации на пользователе, добавлять пользовательский систематические/ядро ​​метаданных для app_metadata и хранить все другие соответствующие данные в user_metadata, например имя и фамилия. Я делаю это, а затем просто имею свойство, которое объединяет их для свойства FullName.

Смежные вопросы