確認環境
$ bundle exec ruby --version
ruby 2.7.5p203 (2021-11-24 revision f69aeb8314) [x86_64-darwin19]$ bundle exec rails --version
Rails 6.0.4.6local サーバーで動かします。
インストール
Gemfile
gem 'devise'$ bundle installdevise の設定
$ rails generate devise:installconfig/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 Sampleapp/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
nilhttp://localhost:3000/sample/hoge2 にアクセス
ログ結果 (log/development.log)
http://localhost:3000/users/sign_in へリダイレクト