Home » Сгенерируйте аутентификацию, как это делает Rails 8.

Сгенерируйте аутентификацию, как это делает Rails 8.

В необходимости аутентификатора

В Rails нет способа аутентификации пользователя по умолчанию, как в Laravel в мире PHP.

Долгое время Devise был достаточно хорошим вариантом для Rails, но не достиг 100% внедрения по причинам, долго обсуждавшимся на Reddit.

Из ДХХ:

Мы можем научить разработчиков Rails использовать базовые блоки. [of authentication] добавив базовый генератор аутентификации, который по сути работает как каркас, но для аутентификации.

Самый близкий генератор аутентификации для Rails 7

нулевая аутентификация драгоценный камень на данный момент является самым близким решением.

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

Это руководство представляет собой упрощенную версию моего текущего использования.

Предварительные условия

Для этого урока вам понадобится:

1
2
3
4
5
ruby -v  # 3.3.0
rails -v  # 7.1.3
bundle -v  # 2.4.10
node -v # 20.9.0
git --version # 2.34.1

Создайте приложение Rails по умолчанию

Создайте новое приложение Rails следующим образом:

1
2
3
rails new myapp
cd myapp

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

Добавить нулевую аутентификацию

Итак, теперь мы следуем официальной документации драгоценного камня и добавляем:

1
2
3
bundle add authentication-zero
bin/rails generate authentication

Теперь у вас есть маршруты, контроллеры, модели, миграции, тесты и т. д.

Убедитесь, что весь набор тестов пройден

Если все зеленое, можно переходить к следующему шагу 🙂

Добавьте драгоценный камень Letter_opener

Вам необходимо добавить способ просмотра отправленного электронного письма на вашем локальном компьютере, чтобы поиграться с электронным письмом с подтверждением (например).

Для этого добавьте в Gemfile:

1
2
# inside Gemfile
gem "letter_opener", group: :development

и бежать

Затем внутри config/environments/development.rb добавлять

1
2
config.action_mailer.delivery_method = :letter_opener
config.action_mailer.perform_deliveries = true

Поиграйтесь с приложением

По умолчанию в базе данных разработки нет пользователей.

Первый вариант — добавить это в файлseed.rb:

1
2
User.create(email: "[email protected]", password_digest: BCrypt::Password.create("Secret1*3*5*"), verified: true)

и бежать

И перезапустите локальный веб-сервер с помощью

Теперь вы можете связаться с пользователем, описанным в исходном файле.

Но это было мошенничество, верно?

Второй вариант — поиграть с приложением: сначала зайдите на домашнюю страницу, затем нажмите «Зарегистрироваться», а затем введите одну легко запоминающуюся комбинацию адреса электронной почты и пароля.

Затем перейдите по адресу localhost:3000/letter_opener и щелкните ссылку проверки.

Большой! Теперь у вас есть новый проверенный пользователь (кто сказал «клиент»? Еще нет ;))

Найдите время, чтобы прочитать код

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

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

Теперь у вас есть полноценная система аутентификации, которую вы полностью понимаете!

Заключение

Я думаю, что эта статья устареет, как только появится аутентификатор Rails 8.

В ожидании этого у нас есть чистое, элегантное и настраиваемое решение: драгоценный камень с нулевой аутентификацией.

2024-01-29 10:55:34


1706571901
#Сгенерируйте #аутентификацию #как #это #делает #Rails

Read more:  Сотрудник посольства Индии в Москве задержан за шпионаж в пользу пакистанской ISI: УП АТС | Новости Лакхнау

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.