Не могу понять автоматически сгенерированную базу данных акведука и авторизацию

Я создал проект Aqueduct с помощью aqueduct create -t db_and_auth, но не понял, как работает регистрация и аутентификация с OAuth 2.0. Может ли кто-нибудь объяснить, как зарегистрироваться из шаблона OAuth2.0 и БД, автоматически созданного акведуком, и какие шаги мне нужно сделать, чтобы зарегистрироваться, а затем пройти аутентификацию?


person Gabriel Pacheco    schedule 23.09.2018    source источник


Ответы (1)


Из клиентского приложения вы POST /register получаете полезную нагрузку JSON, содержащую пользователя. В зависимости от того, какая у вас версия шаблона, это может быть просто {"username": "bob", "password": "password"} — проверьте определение вашего типа _User.

Когда вы аутентифицируете уже существующего пользователя, вы вызываете POST /auth/token и передаете имя пользователя, пароль и другие обязательные поля в виде данных x-www-form-urlencoded. Формат этого запроса, написанный в коде Dart, находится здесь: http://aqueduct.io/docs/auth/controllers/.

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

Чтобы сохранить идентификаторы клиентов в базе данных, вам необходимо сначала выполнить миграцию базы данных вашего приложения в экземпляре базы данных (см. http://aqueduct.io/docs/db/db_tools/ для запуска миграции базы данных). Это создаст таблицы для хранения идентификаторов и токенов клиентов OAuth 2.0.

Затем вам нужно будет добавить идентификаторы клиентов OAuth2.0 в свою базу данных. Лучше всего это сделать с помощью aqueduct auth CLI, и документация по нему есть здесь: http://aqueduct.io/docs/auth/cli/.

person Joe Conway    schedule 24.09.2018
comment
Можете ли вы показать пример полезной нагрузки POST/register? Я пытаюсь POST, но он отвечает 401 Unauthorized. Спасибо. - person Gabriel Pacheco; 24.09.2018
comment
В моем шаблоне есть поля электронной почты и пароля, имя пользователя унаследовано. - person Gabriel Pacheco; 24.09.2018
comment
Если POST /register неавторизован, вам необходимо добавить идентификатор клиента в кодировке base64 и секрет клиента в заголовок базовой авторизации (это то же самое, что показано здесь aqueduct.io/docs/auth/controllers). Проверьте тесты в test/register_test.dart в шаблоне для примера полезной нагрузки. - person Joe Conway; 25.09.2018
comment
Кроме того, канал Slack — это хорошее место, чтобы быстрее получать отзывы: slackaqueductsignup.herokuapp.com. - person Joe Conway; 25.09.2018
comment
Спасибо, мне очень помогли. Я уже на вашем канале Slack! - person Gabriel Pacheco; 26.09.2018
comment
Как насчет входа через фейсбук? Есть ли способ переопределить /auth/token и использовать код facebook вместо имени пользователя/пароля? - person Jared Green; 13.08.2020