[RUBY] Ich berührte den Gerätesteuerer, den ich in der Blackbox fühlte

Einführung

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.

Controller entwickeln

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.

Wenn Sie den Devise Controller bisher noch nicht verwendet haben

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.

Hintergrund

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.

fließen

  1. Generieren Sie einen Devise Controller
  2. Ändern Sie die Anmeldung in eine beliebige Authentifizierung
  3. Erstellen Sie mit dem Devise Controller starke Parameter
  4. Fügen Sie dem Routing eine Aktion hinzu
  5. Ändern Sie die Ansichtsdatei in eine beliebige Authentifizierung

1. Generieren Sie einen Devise Controller

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.

2. Ändern Sie die Anmeldung in eine beliebige Authentifizierung

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.

  • Sie können es für die Anmeldeauthentifizierung verwenden, ohne : password zu schreiben.

3. Erstellen Sie mit dem Devise Controller starke Parameter

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

4. Fügen Sie dem Routing eine Aktion hinzu

config/routes.rb


devise_for :users, controllers: {sessions: 'users/sessions'}

Hinzugefügt nach users.

5. Ändern Sie die Ansichtsdatei in eine beliebige Authentifizierung

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 ...

Schließlich

Ebenso ist es möglich, neu registrierte Steuerungen zu ändern. Ich frage mich, ob ich den Sitzungsteil durch Registrierungen ersetzen kann ...

Recommended Posts