Ich habe Geräte zum Lernen verwendet und einen Anmeldebereich erstellt. Standardmäßig wird es mit einem Benutzernamen und einem Kennwort authentifiziert. Dieses Mal ändern wir jedoch die Einstellung, um sich mit einer Mitarbeiternummer und einem Kennwort zu authentifizieren.
Ruby 2.5.3 Ruby on Rails 5.2.4 Devise 4.7.1
Gemfile
gem 'devise'
$ bundle install
● Einstellungen vornehmen
$ rails generate devise:install
Ich bekomme eine Nachricht wie diese. Da ich ein Anfänger bin, war ich über die Fehlermeldung überrascht, aber wenn dies erscheint, ist es ein Erfolg.
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
===============================================================================
● Nachrichteninhalt
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Routeneinstellung Es ist so eingestellt, dass nach der Registrierung als Mitglied zur Route gesprungen wird.
Betten Sie eine Flash-Nachricht ein. Es wird verwendet, wenn Sie den Flash beim An- und Abmelden anzeigen möchten. Ich habe es in eine gemeinsame Ansicht eingebettet.
app/views/layouts/application.html.erb
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
</body>
$ rails g devise:views
● Ändern Sie die Geräteeinstellungen
config/initializers/devise.rb
Um die 43. Linie
Geben Sie die Mitarbeiternummer für den Authentifizierungsschlüssel an
- config.authentication_keys = [:email]
+ config.authentication_keys = [:employee_number]
Um die 55. Linie
Bei Authentifizierungsschlüsselwerten wird die Groß- und Kleinschreibung nicht berücksichtigt
- config.case_insensitive_keys = [:email]
+ config.case_insensitive_keys = [:employee_number]
Um die 60. Linie
Leere Schlüssel loswerden
- config.strip_whitespace_keys = [:email]
+ config.strip_whitespace_keys = [:employee_number]
● Erstellen Sie ein Benutzermodell
$ rails g devise user
app/models/user.rb
#Die folgenden drei Methoden verwenden also den Benutzernamen als Authentifizierungsschlüssel
#Unnötige Methoden überschreiben und deaktivieren.
def email_required?
false
end
def email_changed?
false
end
def will_save_change_to_email?
false
end
db/migrate/Datum_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
Hier ändern!!
- 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
● Controller wechseln
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
#Methode überschreiben.
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,Definieren Sie das Feld von neu
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
Damit sind die Einstellungen abgeschlossen. Alles was Sie tun müssen, ist die Ansicht zu ändern und fertig.
[* Rails *] Verwendung von Devise (Rails5-Version) Anfänger von Ruby on Rails haben versucht, gem Devise zu verwenden.
Recommended Posts