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)
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.
Dann implementieren wir in der Reihenfolge "Routing → Controller → Ansicht".
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.
App / controller / users / guest_sessions_controller.rb
Erstellen wir also einen Controller im angegebenen Verzeichnis und implementieren eine einfache Anmeldeaktion.
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).
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.)
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
Ich denke, es gibt verschiedene Artikel, aber die Grundlagen sind wie hier gezeigt, also beziehen Sie sich bitte auf sie!
Recommended Posts