Как эффективно использовать Devise и Doorkeeper в моем API-интерфейсе rails?

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

Я хочу создать приложение-рельсы API-интерфейса, которое отвечает за аутентификацию и авторизацию пользователей при их регистрации и использовании службы. Я выбрал два довольно популярных драгоценных камня под названием Doorkeeper (авторизация) и Devise (аутентификация).

В настоящее время у меня есть эта структура, и она работает, однако у меня возникают проблемы, полностью отстающие от обязанностей этих драгоценных камней. Насколько я понимаю, камень Devise служит в качестве уровня аутентификации, что означает, что пользователь может быть идентифицирован и зарегистрирован (дополнительные функции будут обсуждаться ниже). С другой стороны, Doorkeeper обеспечит доступ к ресурсам только тем членам, которые уполномочены делать это. Я выбрал Doorkeeper для интеграции OAuth2, потому что мой сервер должен иметь возможность предоставлять доступ к API потенциальным третьим сторонам в будущем.

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

Вот текущий поток аутентификации/авторизации:

Проблема. Пользователь регистрируется, как я могу использовать Devise для отправки электронного письма с подтверждением, если мой API лишен предварительно сконфигурированных представлений, предоставленных Devise? (Боковое примечание. Черты Recoverable, Rememberable, Trackable и Confirmable находятся в модели пользователя/миграции.)

Аналогично, мне бы хотелось знать, как реализовать потенциальный пароль reset. Обратите внимание, что ссылки на примеры будут достаточными, если они применимы к моему прецеденту.

Я знаю, что Devise предлагает эти возможности, но трудно понять, как это сделать, не нажимая заранее настроенные маршруты (view?).

Например, когда пользователь подписывается, он нажимает мой собственный метод user_controller create, который в основном просто создает нового пользователя, который должен автоматически отправлять подтверждение по электронной почте (если мы предположим, что моя почтовая конфигурация верна)

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

Ответ 1

Разработчик действительно сделан для того, чтобы делать все для вас, если вы обходите автоматические механизмы и хотите повторно их реализовать вручную... вы совершите ошибку. Не обходите mecanism контроллеров и используйте вики-разработки для небольших настроек, таких как изменение перенаправления после создания/обновления.

Devise обрабатывает подтверждающие электронные письма (подтверждаемые) и систему сброса пароля (восстанавливаемые) для вас, поэтому используйте их систему, это просто варианты для активации.

Если вы хотите изменить свой вид (мы всегда хотим настроить макет), вы можете:

rails g devise:views

Он будет поддерживать поток разработки, с вашими пользовательскими представлениями.

Если вы хотите прекратить использование определенного mecanism, просто удалите его из модели.

devise :database_authenticatable, :registerable, :confirmable, :recoverable

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

Их Wiki действительно плотный, но читайте его снова и снова, все, что вам нужно, здесь.

Наконец: Да Gatekeeper предоставляет хорошую систему провайдеров OAuth2 и очень хорошо сочетается с Devise, поэтому вы сделали хороший выбор здесь. Их система взглядов также настраивается.

Вы также можете взглянуть на cancancan, который обрабатывает роли и права для ваших пользователей (простые, API, admin и т.д.).

Надеюсь, поможет !