Rails 8の認証ジェネレータを試す

Rails 8で導入された認証ジェネレータを試します。
参照:Rails 8で基本的な認証ジェネレータが導入される(翻訳)

ユーザーアカウントやセッション管理の基盤を用意するため、以下の3つのモデルと、それらに対応するマイグレーションがセットアップされます。
・Userモデル
・Currentモデル
・Sessionモデル

ご参考までに、ジェネレータが生成するCurrentモデルの記事をご紹介します。
Railsの`CurrentAttributes`は有害である(翻訳)
Userモデルについてもアカウントを分けた方が良い場合もあるようです。

今回はログイン中ユーザーのメールアドレスを表示します。
ログイン後の画面は次のようになります。

環境
Ruby 3.4.2
Rails 8.0.2

手順
アプリを生成します。

rails new toroku
cd toroku

認証システムをセットアップします。

bin/rails generate authentication
bin/rails db:migrate

DBにユーザーをロードします。

bin/rails db:fixtures:load

確認用の画面とコントローラを生成します。

bin/rails g controller home index

config/routes.rb

root "home#index"

ログイン中ユーザーのメールアドレスを表示します。

app/views/home/index.html.erb

<%= Current.user.email_address %> でログイン中です。

ログアウトするためのボタンをレイアウトファイルの冒頭に追加します。
Railsガイドの11.1 ログアウト機能を追加するを参考にしました。

app/views/layouts/application.html.erb

  <body>
    <nav>
      <%= link_to "Home", root_path %>
      <%= button_to "Log out", session_path, method: :delete if authenticated? %>
    </nav>
    <main>
      <%= yield %>
    </main>
  </body>

サーバーを起動します。

bin/rails server

ログイン画面が表示されます。

one@example.com / password でログインします。
ホーム画面にメールアドレスが表示されます。

以上です。



▼この記事がいいね!と思ったらブックマークお願いします
このエントリーをはてなブックマークに追加