【Rails】devise, devise_token_authで、ユーザー作成ログインの初期設定
新規ユーザーモデルを作成する時
deviseの設定
$ rails g devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => {
:registrations => 'users/registrations',
:sessions => 'users/sessions'
}
devise_scope :user do
get "sign_in", :to => "users/sessions#new"
get "sign_out", :to => "users/sessions#destroy"
end
end
$ rails g devise:install
create config/initializers/devise.rb
create config/locales/devise.en.yml
routes.rb
Rails.application.routes.draw do
devise_for :users, :controllers => {
:registrations => 'users/registrations',
:sessions => 'users/sessions'
}
devise_scope :user do
get "sign_in", :to => "users/sessions#new"
get "sign_out", :to => "users/sessions#destroy"
end
end
devise_for :モデル名
認証に必要なルーティングを自動で設定
devise_token_authの設定
$ rails g devise_token_auth:install User auth
create config/initializers/devise_token_auth.rb
insert app/controllers/application_controller.rb
gsub config/routes.rb
create db/migrate/20200919181950_devise_token_auth_create_users.rb
create app/models/user.rb
$ rails db:migrate
User...
モデル名
auth...
認証ルーティングをマウントするパス
routes.rb
Rails.application.routes.draw do
mount_devise_token_auth_for 'User', controllers: {
registrations: 'users'
}
end
deviseコントローラ
$ rails g devise:controllers users
create app/controllers/users/confirmations_controller.rb
create app/controllers/users/passwords_controller.rb
create app/controllers/users/registrations_controller.rb
create app/controllers/users/sessions_controller.rb
create app/controllers/users/unlocks_controller.rb
create app/controllers/users/omniauth_callbacks_controller.rb
すでにUserモデルある場合
マイグレーション内容をいじる
class DeviseTokenAuthCreateUsers < ActiveRecord::Migration[6.0]
def change
change_table(:users) do |t|
## Required
t.string :provider, :null => false, :default => "email"
t.string :uid, :null => false, :default => ""
## Database authenticatable
t.string :encrypted_password, :null => false, :default => ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
t.boolean :allow_password_change, :default => false
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, :default => 0, :null => false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
## User Info
# t.string :name
t.string :nickname
t.string :image
# t.string :email
## Tokens
t.text :tokens
# t.timestamps
end
add_index :users, :email, unique: true
add_index :users, [:uid, :provider], unique: true
add_index :users, :reset_password_token, unique: true
add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
注意すべきことは、2つ
-
change_table(:users)
にすること。(元は、create_table
) - 既存のカラムはコメントアウトすること
Author And Source
この問題について(【Rails】devise, devise_token_authで、ユーザー作成ログインの初期設定), 我々は、より多くの情報をここで見つけました https://qiita.com/beanzou/items/c315889abae255a4266c著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .