Lors de la création d'une application avec Rails, je pense que de nombreuses personnes implémentent la fonction de connexion à l'aide de devise. Parmi eux, beaucoup de gens ont entendu dire: "Ajoutons un simple login au portfolio!"
Cependant, d'après mon expérience, j'ai eu beaucoup de mal à l'implémenter ''. La raison est simplement
parce que je devais faire quelque chose que je ne savais pas sur le plan ''.
Donc dans cet article,
Tout en organisant cette zone, je voudrais sortir la "Procédure d'implémentation Easy Login".
De plus, cet article est basé sur ce merveilleux article. Il y a aussi une explication détaillée sur YouTube, alors jetez un œil.
Avant d'entrer dans l'implémentation, contrôlons d'abord le `` flux de connexion facile ''.
Flux de connexion facile
1.Cliquez sur le bouton de connexion facile
2-1.Tout courrier([email protected])N'est pas dans la table des utilisateurs, ajoutez une autre colonne et créez un utilisateur
2-2.Tout courrier([email protected])Obtenez-le s'il est dans la table des utilisateurs
3.Connectez-vous en tant qu'utilisateur créé / acquis
4.Rediriger vers votre page préférée(Principalement la première page)
En d'autres termes, tout ce que vous avez à faire est la prochaine étape.
Processus requis
1.Routage facile Définir le chemin du contrôleur de connexion
2.Créez un contrôleur pour une connexion facile
3.Placer le lien dans la vue
Nous le mettrons en œuvre selon ce processus.
Ensuite, nous implémenterons dans l'ordre `` routage → contrôleur → vue ''.
Ajoutez la description suivante au fichier de routage.
routes.rb
devise_scope :user do
post 'users/guest_sign_in', to: 'users/guest_sessions#new_guest'
end
Cela générera le routage suivant:
Prefix | Verb | URI Pattern | Controller#Action |
---|---|---|---|
users_guest_sign_in | POST | /users/guest_sign_in | users/guest_sessions#new_guest |
Organisez ce contenu.
App / controllers / users / guest_sessions_controller.rb
Créons donc un contrôleur dans le répertoire spécifié et implémentons une action de connexion simple.
Nous allons implémenter l'action new_guest '' dans
app / controllers / users / guest_sessions_controller.rb``.
Veuillez noter les points ci-dessus.
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|
#Ajouter les colonnes requises dans le bloc(Ajoutez un surnom pour vous-même)
user.nickname = "Utilisateur test"
user.password = SecureRandom.urlsafe_base64
# user.confirmed_at = Time.now #Obligatoire si vous utilisez Confirmable
end
#S'identifier(méthode de conception)
sign_in user
#Rediriger vers la première page
redirect_to root_path
end
end
find_or_create_by!
Est une méthode comme celle-ci:
Au fait, cette fois, le but est de montrer le code à implémenter, alors veuillez consulter l'article suivant pour compléter la partie espace de noms et mot de passe (Qiita est un article que j'ai écrit).
Placez un lien dans la vue où vous souhaitez implémenter un simple bouton de connexion. Pour mon application, j'ai ajouté le code suivant en haut de la page.
haut de page
<%= link_to 'Connexion invité', users_guest_sign_in_path, method: :post %>
C'est ça! (Le GIF ci-dessous a changé les détails de mon application)
C'est le travail du modèle d'interagir avec la base de données pour obtenir et générer des enregistrements. Je pense donc qu'il serait préférable de le séparer comme suit.
app/controllers/users/guest_sessions_controller.rb
class Users::SessionsController < Devise::SessionsController
def new_guest
user = User.guest
#S'identifier(méthode de conception)
sign_in user
#Rediriger vers la première page
redirect_to root_path
end
end
app/models/user.rb
class User < ApplicationRecord
#(Omis)
def self.guest
find_or_create_by!(email: "[email protected]") do |user|
user.nickname = "Utilisateur test"
user.password = SecureRandom.urlsafe_base64
end
end
end
Je pense qu'il existe différents articles, mais les bases sont telles que présentées ici, alors veuillez vous y référer!
Recommended Posts