Я ищу несколько стратегических советов по реализации приложения, которое поддерживает несколько методов входа.
На самом деле у меня уже большая часть работает.В моем приложении я позволяю пользователям регистрироваться и входить в систему с использованием классического подхода: управляемой мной учетной записи, где я предлагаю все функции управления пользователями, такие как вход, выход, регистрация, активация по электронной почте, сброс пароля,изменение пароля, изменение адреса электронной почты и т. д.
Однако пользователи также могут зарегистрироваться и войти в систему, используя свою учетную запись Twitter.Система позволит пользователю пройти аутентификацию в Twitter и авторизовать мое приложение для доступа к своей учетной записи, затем Twitter перенаправит в мое приложение, и мне будет присвоено имя пользователя Twitter.В настоящее время, если это имя пользователя мне не известно, я создаю его в своей базе данных.Если он мне известен, но это другой тип аккаунта (собственный аккаунт), я выкидываю ошибку.
По сути, в настоящее время пользователи должны выбрать метод входа при создании учетной записи и придерживаться его.Есть два способа улучшить ситуацию:
Разрешить несколько методов входа
У пользователей будет одна учетная запись, но несколько способов входа. Скажем,У пользователя есть собственная учетная запись с именем «joedirt», связанная с адресом электронной почты «joe@dirt.com».Далее, этот пользователь не входит в систему, используя собственный метод, но выбирает способ Twitter.В твиттере его также называют "joedirt".
Проблема здесь в том, что из Twitter я получаю только его имя пользователя.Было бы серьезной утечкой в системе безопасности, если бы при одном совпадении имен я мог войти в собственную учетную запись.
Что мне здесь делать?Спросите пользователя, который входит в систему с дополнительным методом для его адреса электронной почты?Это был бы единственный способ убедиться, что это касается одного и того же пользователя, верно?
Разрешить только один метод входа, но возможность выбрать один в любое время
Альтернативный подход может состоять в том, чтобы позволить пользователю использовать только один метод входа за раз, но возможность установить его в качестве предпочтения и изменить его даже после создания учетной записи.Могут разворачиваться два сценария:
- От встроенного метода входа до стороннего метода входа.Поскольку я не могу получить адрес электронной почты от стороннего имени входа, как я смогу связать собственную учетную запись со сторонней учетной записью?Опять же, сопоставление имени пользователя слишком слабое, верно?
- От стороннего метода входа к собственному методу.Маловероятное событие, я должен даже поддержать это?
Извините за длинную историю.У меня есть небольшой блок мыслей о том, каков наилучший подход и каковы последствия для каждого сценария.