railsでdeviseを使ってみた
deviseという認証ライブラリを使う
まずはGemfileに
gem 'devise
と追加する。
その後bundle install
。
gemがインストールされたら、Deviseをインストール。
rails g devise:install
次に、Devise用のモデルを作成する。
rails g devise user
これを実行すると、devise用にuserというモデルが作成される。
(モデルを作ったらマイグレーションを忘れずに。rails db:migrate
)
- アクションの作成
任意のコントローラーで、
class UsersController < ApplicationController before_action :authenticate_user!, only: :show def index @users = User.all end def show @user = User.find(params[:id]) end end
のようにすると、showアクションを呼ぶ前に、ログインされているかどうかをチェックしてくれる。
ログインしていなければ、ログイン画面にリダイレクトする。
ここで詰まった
new_user_session_url
が見つかりませんが出る。
調べてみると、routes.rbに
devise_for :users
を追加しないといけない事が判明。
追加すると無事ログイン画面にリダイレクトされた。
あと、routes.rbには、rootの設定も必須のようです。
devise_for :users root 'users#index'