В необходимости аутентификатора
В 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