【초보자】 devise의 사용법 도입에서 설정 변경
소개
공부를 위해 devise를 사용하여 로그인 주위를 만들었습니다.
기본적으로 사용자 이름, 비밀번호로 인증하지만, 이번 직원 번호, 비밀번호로 인증하도록 설정을 변경합니다.
환경
Ruby 2.5.3
Ruby on Rails 5.2.4
Devise 4.7.1
완성
bootstrap으로 외형을 정돈하고 있습니다만, 이렇게 되도록 설정을 변경해 갑니다.
구현
Gemfilegem 'devise'
$ bundle install
● devise 설정
$ rails generate devise:install
이런 느낌의 메시지가 나옵니다.
초보자이므로 에러 메시지인가와 깜짝 놀랐습니다만, 이것이 나오면 성공입니다.
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Some setup you must do manually if you haven't yet:
1. Ensure you have defined default url options in your environments files. Here
is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
In production, :host should be set to the actual host of your application.
2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:
root :to => "home#index"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. You can copy Devise views (for customization) to your app by running:
rails g devise:views
===============================================================================
● 메시지 내용
1. 신규 등록 등 인증 메일을 보낼 때 메일 문장에 있는 승인 링크 URL을 설정합니다.
config/environments/development.rbconfig.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2. 루트 설정
회원등록 후 등에 루트로 날아가는 설정이 되어 있습니다.
3. 플래시 메시지를 포함합니다. 로그인, 로그아웃 시 플래시를 표시하고 싶을 때 사용합니다. 나는 공통보기에 내장했다.
app/views/layouts/application.html.erb<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
</body>
4. 뷰를 사용자 정의하기 위해
$ rails g devise:views
●devise의 설정 변경
config/initializers/devise.rb43行目あたり
認証キーは社員番号を指定
- config.authentication_keys = [:email]
+ config.authentication_keys = [:employee_number]
55行目あたり
認証キーの値は大文字小文字を区別しない
- config.case_insensitive_keys = [:email]
+ config.case_insensitive_keys = [:employee_number]
60行目あたり
空白キーを取り除く
- config.strip_whitespace_keys = [:email]
+ config.strip_whitespace_keys = [:employee_number]
● 사용자 모델 만들기
$ rails g devise user
app/models/user.rb# 以下3つのメソッドは、user名を認証キーとするので、
# 不必要なメソッドをオーバーライドして無効化しています。
def email_required?
false
end
def email_changed?
false
end
def will_save_change_to_email?
false
end
db/migrate/date_devise_create_user.rb
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :employee_number, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## 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
t.timestamps null: false
end
ここを変更!!
- add_index :users, :email, unique: true
+ add_index :users, :employee_number, 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
$ rails db:migrate
● 컨트롤러 변경
application_controller.rbclass ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
# methodをオーバーライドする。
def configure_permitted_parameters
sign_up_params = [:employee_number, :password, :password_confirmation]
sign_in_params = [:employee_number, :password, :remember_me]
# account_update, sign_in, sign_up, のフィールドを再定義
devise_parameter_sanitizer.permit(:sign_up, keys: sign_up_params)
devise_parameter_sanitizer.permit(:sign_in, keys: sign_in_params)
devise_parameter_sanitizer.permit(:account_update, keys: account_update)
end
end
설정은 이것으로 끝입니다. 그리고는 view를 변경하면 완성입니다.
참고
[Rails] devise 사용법(rails5판)
Ruby on Rails 초보자가 gem Devise를 사용해 보았습니다.
Reference
이 문제에 관하여(【초보자】 devise의 사용법 도입에서 설정 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/usami0322/items/c7d59cff0b720d45e63a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Ruby 2.5.3
Ruby on Rails 5.2.4
Devise 4.7.1
완성
bootstrap으로 외형을 정돈하고 있습니다만, 이렇게 되도록 설정을 변경해 갑니다.
구현
Gemfilegem 'devise'
$ bundle install
● devise 설정
$ rails generate devise:install
이런 느낌의 메시지가 나옵니다.
초보자이므로 에러 메시지인가와 깜짝 놀랐습니다만, 이것이 나오면 성공입니다.
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Some setup you must do manually if you haven't yet:
1. Ensure you have defined default url options in your environments files. Here
is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
In production, :host should be set to the actual host of your application.
2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:
root :to => "home#index"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. You can copy Devise views (for customization) to your app by running:
rails g devise:views
===============================================================================
● 메시지 내용
1. 신규 등록 등 인증 메일을 보낼 때 메일 문장에 있는 승인 링크 URL을 설정합니다.
config/environments/development.rbconfig.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2. 루트 설정
회원등록 후 등에 루트로 날아가는 설정이 되어 있습니다.
3. 플래시 메시지를 포함합니다. 로그인, 로그아웃 시 플래시를 표시하고 싶을 때 사용합니다. 나는 공통보기에 내장했다.
app/views/layouts/application.html.erb<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
</body>
4. 뷰를 사용자 정의하기 위해
$ rails g devise:views
●devise의 설정 변경
config/initializers/devise.rb43行目あたり
認証キーは社員番号を指定
- config.authentication_keys = [:email]
+ config.authentication_keys = [:employee_number]
55行目あたり
認証キーの値は大文字小文字を区別しない
- config.case_insensitive_keys = [:email]
+ config.case_insensitive_keys = [:employee_number]
60行目あたり
空白キーを取り除く
- config.strip_whitespace_keys = [:email]
+ config.strip_whitespace_keys = [:employee_number]
● 사용자 모델 만들기
$ rails g devise user
app/models/user.rb# 以下3つのメソッドは、user名を認証キーとするので、
# 不必要なメソッドをオーバーライドして無効化しています。
def email_required?
false
end
def email_changed?
false
end
def will_save_change_to_email?
false
end
db/migrate/date_devise_create_user.rb
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :employee_number, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## 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
t.timestamps null: false
end
ここを変更!!
- add_index :users, :email, unique: true
+ add_index :users, :employee_number, 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
$ rails db:migrate
● 컨트롤러 변경
application_controller.rbclass ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
# methodをオーバーライドする。
def configure_permitted_parameters
sign_up_params = [:employee_number, :password, :password_confirmation]
sign_in_params = [:employee_number, :password, :remember_me]
# account_update, sign_in, sign_up, のフィールドを再定義
devise_parameter_sanitizer.permit(:sign_up, keys: sign_up_params)
devise_parameter_sanitizer.permit(:sign_in, keys: sign_in_params)
devise_parameter_sanitizer.permit(:account_update, keys: account_update)
end
end
설정은 이것으로 끝입니다. 그리고는 view를 변경하면 완성입니다.
참고
[Rails] devise 사용법(rails5판)
Ruby on Rails 초보자가 gem Devise를 사용해 보았습니다.
Reference
이 문제에 관하여(【초보자】 devise의 사용법 도입에서 설정 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/usami0322/items/c7d59cff0b720d45e63a
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
Gemfile
gem 'devise'
$ bundle install
● devise 설정
$ rails generate devise:install
이런 느낌의 메시지가 나옵니다.
초보자이므로 에러 메시지인가와 깜짝 놀랐습니다만, 이것이 나오면 성공입니다.
create config/initializers/devise.rb
create config/locales/devise.en.yml
===============================================================================
Some setup you must do manually if you haven't yet:
1. Ensure you have defined default url options in your environments files. Here
is an example of default_url_options appropriate for a development environment
in config/environments/development.rb:
config.action_mailer.default_url_options = { :host => 'localhost:3000' }
In production, :host should be set to the actual host of your application.
2. Ensure you have defined root_url to *something* in your config/routes.rb.
For example:
root :to => "home#index"
3. Ensure you have flash messages in app/views/layouts/application.html.erb.
For example:
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
4. You can copy Devise views (for customization) to your app by running:
rails g devise:views
===============================================================================
● 메시지 내용
1. 신규 등록 등 인증 메일을 보낼 때 메일 문장에 있는 승인 링크 URL을 설정합니다.
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
2. 루트 설정
회원등록 후 등에 루트로 날아가는 설정이 되어 있습니다.
3. 플래시 메시지를 포함합니다. 로그인, 로그아웃 시 플래시를 표시하고 싶을 때 사용합니다. 나는 공통보기에 내장했다.
app/views/layouts/application.html.erb
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
</body>
4. 뷰를 사용자 정의하기 위해
$ rails g devise:views
●devise의 설정 변경
config/initializers/devise.rb
43行目あたり
認証キーは社員番号を指定
- config.authentication_keys = [:email]
+ config.authentication_keys = [:employee_number]
55行目あたり
認証キーの値は大文字小文字を区別しない
- config.case_insensitive_keys = [:email]
+ config.case_insensitive_keys = [:employee_number]
60行目あたり
空白キーを取り除く
- config.strip_whitespace_keys = [:email]
+ config.strip_whitespace_keys = [:employee_number]
● 사용자 모델 만들기
$ rails g devise user
app/models/user.rb
# 以下3つのメソッドは、user名を認証キーとするので、
# 不必要なメソッドをオーバーライドして無効化しています。
def email_required?
false
end
def email_changed?
false
end
def will_save_change_to_email?
false
end
db/migrate/date_devise_create_user.rb
class DeviseCreateUsers < ActiveRecord::Migration[5.2]
def change
create_table :users do |t|
## Database authenticatable
t.string :employee_number, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## 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
t.timestamps null: false
end
ここを変更!!
- add_index :users, :email, unique: true
+ add_index :users, :employee_number, 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
$ rails db:migrate
● 컨트롤러 변경
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
# methodをオーバーライドする。
def configure_permitted_parameters
sign_up_params = [:employee_number, :password, :password_confirmation]
sign_in_params = [:employee_number, :password, :remember_me]
# account_update, sign_in, sign_up, のフィールドを再定義
devise_parameter_sanitizer.permit(:sign_up, keys: sign_up_params)
devise_parameter_sanitizer.permit(:sign_in, keys: sign_in_params)
devise_parameter_sanitizer.permit(:account_update, keys: account_update)
end
end
설정은 이것으로 끝입니다. 그리고는 view를 변경하면 완성입니다.
참고
[Rails] devise 사용법(rails5판)
Ruby on Rails 초보자가 gem Devise를 사용해 보았습니다.
Reference
이 문제에 관하여(【초보자】 devise의 사용법 도입에서 설정 변경), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/usami0322/items/c7d59cff0b720d45e63a텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)