Есть ли способ проверить, существует ли учетная запись Stormpath с определенным адресом электронной почты в социальной сети?

Используя Stormpath, приложение можно проверить на наличие электронной почты, выполнив следующие действия;

application.getAccounts(Accounts.where(Accounts.email().eqIgnoreCase(email)));

Однако я заметил, что вход в Stormpath Social основан на каталогах и не проверяет наличие дубликатов в других каталогах.

Например, если есть пользователь, который регистрируется на Facebook с адресом электронной почты tunji@gmail.com а затем тот же пользователь пытается зарегистрироваться еще раз с его Gmail все еще tunji@gmail.com В настоящий момент Stormpath сохраняет обоих пользователей в двух моих разных каталогах (например, в каталоге Facebook и каталоге Google). Это не то, что я хочу.

Я хочу быть в состоянии гарантировать, что если tunji@gmail.com существует в любом каталоге, он никогда не должен быть зарегистрирован ни в каком другом каталоге. Связанный Аккаунт должен просто быть выбран и представлять того же Пользователя.

Проблема в том, что Stormpath получает зарегистрированную учетную запись в социальной сети следующим образом;

ProviderAccountRequest request = Providers.GOOGLE.account().setAccessToken(token).build();
ProviderAccountResult result = application.getAccount(request);

Что он делает, так это то, что он проверяет только указанный каталог (google) на предмет связанного объекта учетной записи (он не проверяет все приложение), и если в этом каталоге его нет, он автоматически создает его и возвращает новый объект учетной записи, следовательно не дает возможности выполнить проверку и решить, следует ли создавать учетную запись или нет.

Есть ли альтернативный способ добиться этого потока в Stormpath??

1 ответ

Решение

Разработчики используют Stormpath несколькими способами, и они полностью основаны на их приложениях:

  1. Они хотят, чтобы приложение по-разному относилось к аутентификации по паролю Google / Facebook / имени пользователя. Пользователь, который входит в систему с помощью социальных средств, рассматривается по-разному.
  2. Они хотят, чтобы приложение одинаково относилось к аутентификации по паролю Google / Facebook / имени пользователя. Пользователь, который входит в систему любым способом, будет рассматриваться как тот же пользователь.

Изначально Stormpath поддерживает #1, но у нас есть ряд клиентов, которые предъявляют требования около #2, и они достигают этого, используя функцию в Stormpath, называемую пользовательскими данными. Используя пользовательские данные, разработчик может создать однонаправленную или двунаправленную ссылку между каталогом Google или Facebook и реальной "основной" учетной записью в другом каталоге.

Как это работает:

  • Пользователь регистрируется в вашем приложении, используя имя пользователя / пароль, и в облачном каталоге создается учетная запись.
  • Позднее пользователь решает войти в систему с помощью Google / Facebook
  • При успешном входе в Facebook или Google разработчик получает адрес электронной почты из учетной записи Facebook или Google (который проверяется Facebook или Google) и выполняет поиск учетной записи по электронной почте в облачном каталоге.
  • Если учетная запись найдена в каталоге Cloud, ее часть сохраняется в пользовательских данных учетной записи Facebook / Google.
  • При дополнительном входе в систему вы можете проверить пользовательские данные в учетной записи Facebook или Google и перейти по ссылке к фактической учетной записи в облачном каталоге.

Я надеюсь это имеет смысл.

Другие вопросы по тегам