J'ai utilisé un appareil pour étudier et créé une zone de connexion. Par défaut, il s'authentifie avec un nom d'utilisateur et un mot de passe, mais cette fois, nous modifierons le paramètre pour s'authentifier avec un numéro d'employé et un mot de passe.
Ruby 2.5.3 Ruby on Rails 5.2.4 Devise 4.7.1
Gemfile
gem 'devise'
$ bundle install
● définir les paramètres
$ rails generate devise:install
Je reçois un message comme celui-ci. Comme je suis débutant, j'ai été surpris par le message d'erreur, mais si cela apparaît, c'est une réussite.
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
===============================================================================
● Contenu du message
config/environments/development.rb
config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }
Réglage de l'itinéraire Il est configuré pour accéder à l'itinéraire après l'enregistrement en tant que membre.
Intégrez un message flash. Il est utilisé lorsque vous souhaitez afficher le flash lors de la connexion et de la déconnexion. Je l'ai intégré dans une vue commune.
app/views/layouts/application.html.erb
<body>
<p class="notice"><%= notice %></p>
<p class="alert"><%= alert %></p>
</body>
$ rails g devise:views
● Modifier les paramètres de l'appareil
config/initializers/devise.rb
Autour de la 43e ligne
Spécifiez le numéro d'employé pour la clé d'authentification
- config.authentication_keys = [:email]
+ config.authentication_keys = [:employee_number]
Autour de la 55e ligne
Les valeurs de clé d'authentification sont insensibles à la casse
- config.case_insensitive_keys = [:email]
+ config.case_insensitive_keys = [:employee_number]
Autour de la 60e ligne
Débarrassez-vous des clés vierges
- config.strip_whitespace_keys = [:email]
+ config.strip_whitespace_keys = [:employee_number]
● Créer un modèle utilisateur
$ rails g devise user
app/models/user.rb
#Les trois méthodes suivantes utilisent le nom d'utilisateur comme clé d'authentification, donc
#Remplacer les méthodes inutiles et les désactiver.
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
Changer ici!!
- 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
● Changer de contrôleur
application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
before_action :configure_permitted_parameters, if: :devise_controller?
protected
#Méthode de remplacement.
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,Redéfinissez le domaine de
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
Ceci termine les réglages. Tout ce que vous avez à faire est de changer la vue et vous avez terminé.
[* Rails *] Comment utiliser l'appareil (version rails5) Les débutants de Ruby on Rails ont essayé d'utiliser gem Devise.
Recommended Posts