確認環境
$ bundle exec ruby --version
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin19]
$ bundle exec rails --version
Rails 6.0.4.6
local サーバーで動かします。
インストール
Gemfile
gem 'devise'
$ bundle install
devise の設定
$ rails generate devise:install
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
$ rails generate devise User
$ rake db:migrate
会員登録をします。
http://localhost:3000/users/sign_up
$ rails db
SQLite version 3.28.0 2019-04-15 14:49:49
Enter ".help" for usage hints.
sqlite> select * from users
...> ;
1|example@xxxxx.com|$2a$12$v3C0AaDc0YSKvmtzTVmwtOVwcfO.QDbsgo9mHVT8SOVQ6PBzhLc/2||||2022-08-28 04:31:57.990131|2022-08-28 04:31:57.990131
認証しているかどうかの確認 & devise で使えるようになったメソッドの確認
config/routes.rb
Rails.application.routes.draw do
devise_for :users
...
get "sample/hoge" => "sample#hoge"
get "sample/hoge2" => "sample#hoge2"
end
コントローラを生成
$ rails g controller Sample
app/controllers/sample_controller.rb
class SampleController < ApplicationController
before_action :authenticate_user!, only: [:hoge2]
def hoge
Rails.logger.fatal(user_signed_in?)
Rails.logger.fatal(current_user.inspect)
render json: { result: 'success' }
end
def hoge2
Rails.logger.fatal('authenticated!!')
render json: { result: 'success' }
end
end
ログインしている状態
http://localhost:3000/sample/hoge
にアクセス
ログ結果 (log/development.log
)
true
#<User id: 1, email: "example@xxxxx.com", created_at: "2022-08-28 04:31:57", updated_at: "2022-08-28 04:31:57">
http://localhost:3000/sample/hoge2
にアクセス
ログ結果 (log/development.log
)
authenticated!!
ログインしていない状態
http://localhost:3000/sample/hoge
にアクセス
ログ結果 (log/development.log
)
Processing by SampleController#hoge as HTML
false
nil
http://localhost:3000/sample/hoge2
にアクセス
ログ結果 (log/development.log
)
http://localhost:3000/users/sign_in
へリダイレクト