[RUBY] [Rails 6.0] Implementierungsverfahren für "Easy Login" für das Portfolio erforderlich

Überblick

Ich denke, dass es beim Erstellen einer App mit Rails viele Leute gibt, die die Anmeldefunktion mit devise implementieren. Unter ihnen haben viele Leute gehört, dass "Fügen wir dem Portfolio ein einfaches Login hinzu!"

Nach meiner Erfahrung hatte ich jedoch große Probleme, es umzusetzen. Der Grund ist einfach "", weil ich etwas tun musste, von dem ich nichts wusste ".

Also in diesem Artikel,

Während der Organisation dieses Bereichs möchte ich das "Easy Login Implementation Procedure" ausgeben.

Darüber hinaus basiert dieser Artikel auf diesem wunderbaren Artikel. Es gibt auch eine ausführliche Erklärung auf YouTube, also schauen Sie bitte.

Qiita | So implementieren Sie eine einfache Anmelde- / Gastanmeldefunktion (für Portfolio)


Umgebung


Überprüfen Sie den Implementierungsablauf

Bevor wir mit der Implementierung beginnen, steuern wir zunächst den "Easy Login Flow".

Einfacher Anmeldefluss


1.Einfacher Login Button Klick
2-1.Jede Mail([email protected])Ist nicht in der Benutzertabelle, fügen Sie eine weitere Spalte hinzu und erstellen Sie einen Benutzer
2-2.Jede Mail([email protected])Holen Sie es sich, wenn es in der Benutzertabelle ist
3.Melden Sie sich als erstellter / erworbener Benutzer an
4.Leiten Sie zu Ihrer Lieblingsseite weiter(Meistens die oberste Seite)

Mit anderen Worten, alles, was Sie tun müssen, ist der nächste Schritt.

Erforderlicher Prozess


1.Einfaches Routing Legen Sie den Pfad des Login-Controllers fest
2.Erstellen Sie einen Controller für die einfache Anmeldung
3.Link in Sichtweite setzen

Wir werden es nach diesem Verfahren umsetzen.


Implementierung: Bearbeiten Sie 3 Dateien und Sie können loslegen

Dann implementieren wir in der Reihenfolge "Routing → Controller → Ansicht".


1. Einfache Einstellungen für das Login-Routing

Fügen Sie der Routing-Datei die folgende Beschreibung hinzu.

routes.rb


devise_scope :user do
  post 'users/guest_sign_in', to: 'users/guest_sessions#new_guest'
end

Dadurch wird das folgende Routing generiert:

Prefix Verb URI Pattern Controller#Action
users_guest_sign_in POST /users/guest_sign_in users/guest_sessions#new_guest

Organisieren Sie diesen Inhalt.

Erstellen wir also einen Controller im angegebenen Verzeichnis und implementieren eine einfache Anmeldeaktion.


2. Erstellen eines Controllers für die einfache Anmeldung

Wir werden die Aktion "new_guest" in "app / controller / users / guest_sessions_controller.rb" implementieren.

Bitte beachten Sie die obigen Punkte.

app/controllers/users/guest_sessions_controller.rb


class Users::SessionsController < Devise::SessionsController
  def new_guest
    user = User.find_or_create_by!(email: "[email protected]") do |user|
      #Fügen Sie die erforderlichen Spalten im Block hinzu(Füge einen Spitznamen für dich hinzu)
      user.nickname = "Benutzer testen"
      user.password = SecureRandom.urlsafe_base64
      # user.confirmed_at = Time.now  #Erforderlich bei Verwendung von Confirmable
    end
    #Einloggen(Methode entwickeln)
    sign_in user
    #Zur obersten Seite umleiten
    redirect_to root_path
  end  
end

find_or_create_by! Ist eine Methode wie diese:

Dieses Mal soll übrigens der zu implementierende Code angezeigt werden. Lesen Sie daher den folgenden Artikel, um den Namespace- und Kennwortteil zu ergänzen (Qiita ist ein Artikel, den ich geschrieben habe).


3. Platzieren Sie einen Link in der Ansicht

Platzieren Sie einen Link in der Ansicht, in der Sie eine einfache Anmeldeschaltfläche implementieren möchten. Für meine App habe ich der oberen Seite den folgenden Code hinzugefügt.

oberste Seite


<%= link_to 'Gast-Login', users_guest_sign_in_path, method: :post %>

Das ist es! (Das unten stehende GIF hat die Details für meine App geändert.) Image from Gyazo


4. (Ergänzung) Teilweise auf das Benutzermodell portiert

Es ist die Aufgabe des Modells, mit der Datenbank zu interagieren, um Datensätze abzurufen und zu generieren. Ich denke, es wäre besser, es wie folgt zu trennen.

app/controllers/users/guest_sessions_controller.rb


class Users::SessionsController < Devise::SessionsController
  def new_guest
    user = User.guest
    #Einloggen(Methode entwickeln)
    sign_in user
    #Zur obersten Seite umleiten
    redirect_to root_path
  end  
end

app/models/user.rb


class User < ApplicationRecord

#(Weggelassen)

  def self.guest
    find_or_create_by!(email: "[email protected]") do |user|
      user.nickname = "Benutzer testen"
      user.password = SecureRandom.urlsafe_base64
    end
  end
end

Zusammenfassung

Ich denke, es gibt verschiedene Artikel, aber die Grundlagen sind wie hier gezeigt, also beziehen Sie sich bitte auf sie!

Recommended Posts

[Rails 6.0] Implementierungsverfahren für "Easy Login" für das Portfolio erforderlich
[Rails] Implementierung des Anmeldebildschirms in Devise
[Rails] Memo zur Implementierung der Kommentarfunktion
[EC2 / Vue / Rails] EC2-Bereitstellungsverfahren für Vue + Rails
Schienen Hinzufügen einer einfachen Anmeldefunktion
Rails [Für Anfänger] Implementierung der Kommentarfunktion
Rails Grundgerüst für die Implementierung der CRUD-Funktion
[Rails / devise] Implementierung der Funktion zum Bearbeiten von Kontoinformationen / Verfahren zum Ändern des Umleitungsziels
Validierungseinstellungen für die Ruby on Rails-Anmeldefunktion
Verwenden Sie [Rails], um eine Gastbenutzerfunktion zu entwickeln (für das Portfolio).
[Rails] Verfahren zum Verknüpfen von Datenbanken mit Ruby On Rails
[Für Anfänger] Verfahren zum Erstellen eines Controllers mithilfe von Schienen
Implementierung der Ruby on Rails-Anmeldefunktion (Devise Edition)
Erklärung von Ruby on Rails für Anfänger ⑦ ~ Flash-Implementierung ~