[RUBY] [Rails] Geben Sie diesen Artikel an Sie weiter, die nach "devine name login" gesucht haben.

Geben Sie diesen Artikel an Sie weiter, die unter "Login für Namensnamen" nachgeschlagen haben.

Einführung

Mein Name ist yuki. Dank DMMWEBCAMP bin ich jetzt ein WEB-Ingenieur, versammle meine Freunde, um Dienstleistungen zu entwickeln, unterrichte Programmieren als Tutor und genieße jeden Tag mein Ingenieurleben.

Ich bin sicher, Sie haben herausgefunden, wie Sie sich mit Ihrem Namen und Passwort mit dem Rails-Juwel "Devise" mit "devise name login" anmelden können.

Für Sie werde ich heute die verständlichsten verwandten Artikel so weit wie möglich erklären und sogar den Teil "Warum tun", damit es für Sie von Vorteil ist.

Bitte geben Sie Ihr Bestes bis zum Ende, wenn Sie möchten.

Weil du ich in der Vergangenheit bist ...

Zielgruppe des Artikels

Wie repariert man

Lassen Sie uns nun über die Methode und den Grund sprechen. Bitte achten Sie darauf, es nicht in der richtigen Reihenfolge zu übersehen. Darüber hinaus wird die Anmeldung mit einem Namen und einem Passwort im Folgenden als "Namensanmeldung" bezeichnet.

Installieren Sie Devise und führen Sie die Ersteinrichtung durch

Lassen Sie uns zunächst das Gerät als wichtige Prämisse festlegen.

Fügen Sie ein Gerät zu Gemfile hinzu und installieren Sie es

: white_check_mark: Schreiben Sie Folgendes in die Gemfile unten

gem 'devise'

Führen Sie Folgendes aus: white_check_mark: bundle install. Sie können jetzt mit devise in Ihrem Projekt arbeiten.

anfängliche Einstellungen vornehmen

Nachdem die Bundle-Installation abgeschlossen ist, richten wir das Gerät ein.

: white_check_mark: Führen Sie Rails g Devise: Install in der Befehlszeile aus (wo Sie den Befehl ausführen, z. B. ein Terminal).

Diese Ersteinrichtung ist erforderlich, um eine ** Gerätekonfigurationsdatei ** zu erstellen. Wenn Sie dies vornehmen, können Sie später die erforderlichen Einstellungen für die Namensanmeldung vornehmen.

Erstellen Sie die Benutzertabelle, die zum Anmelden erforderlich ist

Erstellen Sie als Nächstes eine Tabelle, in der die für die Namensanmeldung erforderlichen Benutzerdaten gespeichert werden.

: white_check_mark: Führen Sie "Rails G Devise User" in der Befehlszeile aus.

Dies unterscheidet sich ein wenig von dem "Rails G Model User", das über die Devise-Funktion ein Benutzermodell, eine Migrationsdatei usw. erstellt. Der Grund dafür ist, dass automatisch die erforderlichen Spalten erstellt werden (in die Sie Informationen wie E-Mail einfügen).

Erstellen eines Benutzermodells Fügen Sie der Migrationsdatei eine Namensspalte hinzu

Wenn Sie den vorherigen Befehl ausführen, finden Sie eine Migrationsdatei in db / migrate /. Wenn Sie "Rails DB: Migrate" ausführen, können Sie die minimale Benutzertabelle erstellen, die für die Anmeldung mit der Devise-Funktion erforderlich ist. Dieses Mal möchten wir jedoch "Name Login" aktivieren, sodass wir eine Namensspalte hinzufügen. .. Der Grund ist einfach: Der Ort, an dem der Benutzername eingegeben werden soll, ist standardmäßig nicht vorhanden.

Bitte fügen Sie es so hinzu.

db/migrate/2020......devise_create_users.rb


#Unterlassung
      ## 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.string :name #Ich habe es hier hinzugefügt! !! !! !! !! !! !!
      t.timestamps null: false
#Unterlassung

: white_check_mark: Fügen Sie den obigen Code hinzu und führen Sie Rails db: migrate aus

Sie haben jetzt eine Benutzertabelle mit einer Namensspalte erstellt.

Visualisieren Sie die erforderliche Ansichtsdatei, damit der Name zum Zeitpunkt der neuen Registrierung registriert werden kann

Nachdem wir zum Speichern bereit sind, können wir die Namensinformationen auf dem neuen Registrierungsbildschirm senden. Im aktuellen Status ** kann ich den Bildschirm für die Neuregistrierung oder Anmeldung von devise ** nicht bearbeiten **. Weil Sie die Datei nicht sehen können.

Um tatsächlich bearbeiten zu können : white_check_mark: Führen Sie den folgenden Befehl in der Befehlszeile aus.

rails rails g devise:views

Jetzt wird unter App / Ansichten eine Reihe von Geräteordnern erstellt, und Sie können den neuen Registrierungs- und Anmeldebildschirm von Gerät neu schreiben.

Welches ist die wichtigste Datei?

ist.

Fügen Sie ein Formular hinzu, um dem neuen Registrierungsbildschirm einen Namen zu geben

Derzeit kann nur E-Mail über den neuen Registrierungsbildschirm gesendet werden.

: white_check_mark: Lassen Sie uns dies ein wenig bearbeiten, damit wir die Namensinformationen senden können.

app/views/users/registrations/new.html.erb


<h2>Sign up</h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "users/shared/error_messages", resource: resource %>

<!--Von hier aus hinzufügen--!>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name, autofocus: true, autocomplete: "name" %>
  </div>
<!--Addiere hier--!>

  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
  </div>

  <--!Darunter ist dies weggelassen!-->

Wenn du das kannst

Führen Sie Folgendes aus: white_check_mark: Rails s, um auf localhost: 3000 / users / sign_up zuzugreifen. Es ist in Ordnung, wenn Sie eine Namensform haben.

Jedoch ...

Ermöglichen Sie das Senden von Namensinformationen zum Zeitpunkt der neuen Registrierung

Wenn Sie die obigen Schritte ausführen, ist die neue Registrierung wahrscheinlich erfolgreich und der Rails-Startbildschirm wird angezeigt. Sie sollten diese störenden Zeichen jedoch in der Befehlszeile sehen.

Unpermittted parameter: :name

Dies liegt daran, dass der Wert: name nicht gesendet werden darf. ist was es bedeutet. Wenn Sie diesen Artikel lesen, haben Sie wahrscheinlich den Begriff "starke Parameter" gehört, und genau das ist es.

Standardmäßig dürfen Sie nicht den Wert von: name angeben. Lassen Sie uns dies also zu.

: white_check_mark: Bearbeiten Sie app / controller / application_controller.rb. Bitte wie folgt hinzufügen.

app/controllers/application_controller.rb


application_controller.rb
class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller? 

  private

    def configure_permitted_parameters
      devise_parameter_sanitizer.permit(:sign_up,keys:[:email])
    end
end

Sie können sich diese Datei als Controller für die gesamte Anwendung vorstellen. Was Sie hier schreiben, gilt, wenn Sie die Bearbeitung der Anwendung ausführen.

before_action: configure_permitted_parameters, if :: devise_controller? Einfach ausgedrückt bedeutet dies: "Wenn Sie devise verarbeiten möchten, führen Sie etwas mit dem Namen configure_permitted_parameters aus."

Was ist also "configure_permitted_parameters"? Es ist die darunter definierte Methode. Es heißt "devise_parameter_sanitizer.permit (: sign_up, keys: [: name])".

Um dies auf leicht verständliche Weise zu erklären, bedeutet dies "deviseu, erlaube das Senden des Wertes: name bei der Anmeldung! Aber erlaube keine anderen ungültigen Werte!".

: white_check_mark: Versuchen Sie nach dem Festlegen der obigen Einstellung erneut eine neue Registrierung. Die vorherige Fehlermeldung sollte nicht mehr in der Befehlszeile angezeigt werden.

Sie können sich nicht abmelden! Sie können dies tun, indem Sie das Cookie löschen. Versuchen Sie bei MAC, die Schaltfläche "i" neben der URL zu drücken.

Ändern Sie das Formular zum Senden von E-Mails auf dem Anmeldebildschirm in das Formular zum Senden des Namens

: white_check_mark: Nachdem Sie Ihren Namen über den neuen Registrierungsbildschirm registrieren können, ändern wir auch den Anmeldebildschirm.

app/views/users/sessions/new.html.erb


<h2>Log in</h2>

<%= form_for(resource, as: resource_name, url: registration_path(resource_name)) do |f| %>
  <%= render "users/shared/error_messages", resource: resource %>

<!--Von hier aus hinzufügen--!>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name, autofocus: true, autocomplete: "name" %>
  </div>
<!--Addiere hier--!>

<!--Von hier löschen--!>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
  </div>
<!--Bisher gelöscht--!>

  <--!Darunter ist dies weggelassen!-->

Das Formular für E-Mail wurde entfernt und das Formular für den Namen hinzugefügt.

: white_check_mark: Melden Sie sich jetzt mit dem Namen und dem Passwort an, die Sie zuvor registriert haben.

−−− −− − Ja, ich kann nicht. Es ist nervig. Wenn ich mir die Befehlszeile anschaue, sehe ich wieder "Unpermitted parameters :: name". Lassen Sie uns das beheben.

Ändern Sie den für die Anmeldung verwendeten Wert von E-Mail in Name

Dieses Mal ist es tatsächlich anders, wenn etwas in application_controller registriert werden soll, als im Fall einer neuen Registrierung. Um die Faktoren zu beheben, die dieses Mal hier gespielt werden, müssen Sie zu der Datei mit den festgelegten Einstellungen wechseln.

Bitte denk daran. Es ist die Datei, die Sie erstellt haben, als Sie "Rails G Devise: Install" ausgeführt haben.

: white_check_mark: Öffnen Sie jetzt config / initializers / devise.rb.

Wenn Sie VSCcode verwenden, können Sie nach Dateinamen suchen, indem Sie cmd (Strg) + p drücken.

Eine Datei mit verschiedenen Einstellungen wie Ujauja wird geöffnet, ist aber in Ordnung. Ich kann nach einer Zeichenfolge mit "cmd + f" suchen, aber bitte geben Sie sie in config.au ein.

Sie sollten die Anweisung # config.authentication_keys = [: email] finden. Hier legt devise den Schlüssel fest, der für die Authentifizierung verwendet wird (dh Authentifizierung, denken Sie, es ist der Wert, der für die Anmeldung verwendet wird). Kommentieren Sie daher hier aus und ändern Sie die E-Mail-Adresse in den Namen. Machen wir das.

Es bedeutet "# config.authentication_keys = [: name]".

Nun wollen wir sehen, ob wir uns einloggen können! Ich bin sicher, Sie können ohne Fehler erfolgreich sein.

Zusammenfassung

Es ist wie es ist.

Wenn Sie weiter studieren, denken Sie bitte sorgfältig darüber nach, warum es so funktioniert, wie Sie es möchten, wenn Sie die Beschreibung schreiben.

Ich unterstütze dich. Wenn Sie irgendwelche Probleme haben, DM Ich werde auf Sie warten ~.

Ich stelle vor, dass ich auch einen solchen Artikel schreibe

[Alumni] Was ich Leuten sagen möchte, die daran denken, am DMM WEB CAMP teilzunehmen

Unternehmensvorstellung

Ich arbeite derzeit für ein Logistik- und IT-Unternehmen namens Dialog Co., Ltd.. Ab September 2020 stellen wir keine Ingenieure ein, aber wir stellen verschiedene andere Berufe ein. Besuchen Sie daher die Seite Gesucht. Schauen Sie bitte. Ich würde mich freuen, wenn sich eines Tages jemand für meine Qiita-Gelegenheit bewerben würde.

Interviewartikel (Eindrücke nach dem Eintritt in das Unternehmen)

Recommended Posts

[Rails] Geben Sie diesen Artikel an Sie weiter, die nach "devine name login" gesucht haben.
[Rails Devise] So wechseln Sie Benutzer, die nicht auf der Anmeldeseite angemeldet sind
[Rails] Funktionseinschränkungen im Gerät (Login / Logout)
So ändern Sie den App-Namen in Rails
[Schienen] In Gerät hinzugefügt: Benutzername nicht zur Datenbank hinzugefügt
So implementieren Sie die Gastanmeldung in 5 Minuten im Rails-Portfolio
Führen Sie devise with Rails ein, um Benutzerverwaltungsfunktionen zu implementieren
[Rails Tutorial Kapitel 2] Was tun, wenn Sie einen Fehlern im Spaltennamen machen?
Notiz, die zum Anmeldebildschirm übergeht, wenn Sie nicht mit devise angemeldet sind
Für Sie, die von unerwarteten Dezimalstellen in Java betroffen sind
Implementieren Sie die Anmeldefunktion in Rails einfach mit Name und Passwort (1)
Implementieren Sie die Anmeldefunktion in Rails einfach mit nur einem Namen und einem Passwort (2).
Super einfach in 2 Schritten! So installieren Sie devise! !! (Schienen 5 Version)
Implementieren Sie die Anmeldefunktion in Rails einfach mit Name und Passwort (3).
[Organisation] Für Sie, die mit render & redirect_to durcheinander geraten