devise ist ein Juwel, das die Implementierung von Benutzerverwaltungsfunktionen vereinfacht. Es gab viele Teile, in denen ich nicht verstand, warum es funktioniert, weil es einfach war. Ich erstelle eine Originalanwendung, möchte die Spezifikationen ändern und habe nach vielen Versuchen und Irrtümern das Gefühl, dass ich mehr als zuvor gelernt habe, wie man Geräte verwendet.
Als ich zum ersten Mal etwas über Geräte erfuhr, beschäftigte ich mich überhaupt nicht mit Controllern. Für die Entwicklung wurde das Routing ohne Erlaubnis generiert, und der Controller existierte nicht einmal, obwohl andere Funktionen unter Berücksichtigung des MVC-Modells implementiert wurden. Da Rails das MVC-Modell singt, habe ich mit der Idee gelernt: "Ich frage mich, ob es einen Controller gibt, aber ich frage mich, ob er verschwindet." Wenn ich den Befehl im Terminal überprüfe,
rails g --help
=>
Devise:
devise
devise:controllers
devise:install
devise:views
Mir ist aufgefallen, dass das Gerät einen Controller erzeugen kann.
Der starke Parameter wurde in application_controller.rb
gesetzt. Diese Datei wird von allen Controllern geerbt und gilt daher auch für die Controller von devise.
Stören Sie keine anderen Steuerungen als Geräte
application_controller.rb
before_action :configure_permitted_parameters, if: :devise_controller?
private
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:Spaltenname])
end
Der Parameter strong wird nur verarbeitet, wenn der Devise Controller mit devise_controller? Verwendet wird.
In der Anwendung, die ich gerade schreibe, frage ich mich, ob ich die Anmeldung des Benutzers in "Spitzname" </ font> und "Passwort" ändern kann, anstatt mich mit "E-Mail-Adresse" und "Passwort" zu authentifizieren. Es war.
Am Terminal
rails g devise:controllers user
Der Unterschied zur Generierung anderer Controller besteht darin, dass sie als Controller s </ font> pluralisiert werden. Da dieser Befehl verschiedene Controller gleichzeitig generiert, z. B. Anmelden und Anmelden.
config/initializwes/devise.rb/Zeile 49
config.authentication_keys = [:nickname]
Kommentieren Sie die Spalte aus und beschreiben Sie sie, die Sie für eine Authentifizierung verwenden möchten.
: password
zu schreiben.app/controllers/user/sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
before_action :configure_sign_in_params, only: [:create] #Kommentar
(Unterlassung)
protected #Kommentar
# If you have extra params to permit, append them to the sanitizer.
def configure_sign_in_params #Kommentar
devise_parameter_sanitizer.permit(:sign_in, keys: [:nickname, :password]) #Kommentieren Sie die Spalte aus, die Sie für die Authentifizierung verwenden möchten, und beschreiben Sie sie in eckigen Klammern. * Beschreiben Sie hier auch das Kennwort
end #Kommentar
config/routes.rb
devise_for :users, controllers: {sessions: 'users/sessions'}
Hinzugefügt nach users
.
ruby:views/devise/sessions/new.html.erb
<%= form_with model: @user, url: user_session_path, class: 'sessions-main', local: true do |f| %>
<%= f.text_field :nickname, class:"nickname", id:"nickname", placeholder:"Spitzname" %>
<%= f.password_field :password, class:"input-default", id:"password", placeholder:"6 oder mehr alphanumerische Zeichen halber Breite" %>
<%= f.submit "Anmeldung", class:"reg-btn" %>
<% end %>
Zumindest sieht es so aus ...
Ebenso ist es möglich, neu registrierte Steuerungen zu ändern. Ich frage mich, ob ich den Sitzungsteil durch Registrierungen ersetzen kann ...
Recommended Posts