Аутентификация с Vue.js | Flask-RESTful и вход в Google

Я все еще новичок как в Vue.js, так и во фреймворке Flask. Я создал простое приложение todo, которое использует конечные точки JSON из Flask и использует Vue.js для отображения пользовательского интерфейса.

В моем приложении есть модели TODO, PROJECT и USER. Я успешно реализовал «нормальный вход» с помощью моей собственной пользовательской модели. Поток для этого:

  1. Пользователь вводит имя пользователя и пароль.
  2. POST-запрос к Flask API, который сохраняет пользователя с хешированным паролем в базе данных.
  3. Пользователь может войти в систему через конечную точку / auth и получить взамен веб-токен JSON.
  4. Когда пользователь выходит из системы, токен уничтожается.

Теперь я хочу реализовать вход в Google вместе с существующей моделью пользователя. Я мог успешно создать вызов API Google и получить данные пользователя из Google в клиенте vue.js. Но здесь я застрял.

  • Что мне теперь сохранить в базе данных? У меня нет пароля для пользователя, а есть только токен, который можно будет идентифицировать позже, когда я отправлю данные на сервер Flask.
  • Должен ли я сохранять пользователей Google Auth и обычных пользователей в одной таблице базы данных? Как я могу различать их, когда я извлекаю их информацию, чтобы проверить, существует ли пользователь?

Поскольку меня очень беспокоит создание безопасных приложений в будущем, я хотел бы действительно понять, что лучше всего делать в такой ситуации.

Спасибо за вашу помощь!


person Johannes Herrmann    schedule 06.04.2017    source источник


Ответы (1)


Для всех, кто интересуется этой темой: в итоге я сохранил всех пользователей в одной таблице базы данных и создал логическое значение, независимо от того, был ли пользователь вошел в систему с паролем / именем пользователя или с поставщиком OAuth. Если это так, предоставленный токен можно использовать для проверки пользователя.

person Johannes Herrmann    schedule 18.04.2017
comment
Такой же корабль, как и ты. У вас есть пример кода, как вы это сделали? - person Tom Bradely; 05.11.2020