[RUBY] Implémenter une fonction de connexion simple dans Rails

Aperçu

Je crée un portfolio en utilisant Ruby on Rails afin de faire passer des emplois inexpérimentés à ingénieur informatique.

Lors de la création d'un portefeuille qui implémente la fonction de connexion, la plupart des fonctions ne peuvent pas être utilisées sans connexion, vous devez donc vous connecter pour confirmer la fonction (vérifiez votre nom d'utilisateur et votre mot de passe, ou enregistrez-en un nouveau). Cela demande du temps et des efforts.

À l'origine, c'est une fonction qui n'est pas nécessaire en tant qu'application, mais dans le cadre d'une étude et lorsque vous regarderez votre propre portfolio, nous mettrons en place une fonction qui vous permettra de vous connecter facilement afin que l'employeur n'ait pas à prendre de temps.

Environnement de développement

Ruby:2.6.3 Ruby on Rails:5.2.0

Avant d'entrer dans l'explication

Je vais joindre un article auquel j'ai fait référence lors de la mise en œuvre de la fonction.

1. Créez SessionsController

Terminal


$ rails g controller sessions 

Créer SessionsController ci-dessus

2. Modifier SessionsController

/app/controller/sessions_controller.rb


class SessionsController < ApplicationController
  def create
    user = User.find_by(name: params[:name])
    if user&.authenticate(params[:password])
      session[:user_id] = user.id
      redirect_to :root
    else
      render template: "users/login_form"
    end
  end

  def destroy
    session.delete(:user_id)
    redirect_to :root
  end

#Les actions de connexion invité suivantes
  def guest_login
    user = User.guest
    session[:user_id] = user.id
    redirect_to :root, notice: "Vous vous êtes connecté en tant qu'utilisateur invité."
  end
end

La création et la destruction sont décrites car elles sont nécessaires lors de la gestion de la fonction de connexion avec le contrôleur de sessions. La redirection et la destination de rendu peuvent être définies de manière arbitraire. Note personnelle: &. Renvoie nil lorsque l'objet du côté gauche est nul et appelle la méthode du côté droit lorsqu'il n'est pas nul.

Le nom de l'action peut être défini de manière arbitraire. La méthode invité est définie dans le modèle utilisateur dans la section suivante.

3. Modifier le modèle utilisateur

/app/assets/models/user.rb


#réduction
   def self.guest
    find_or_create_by!(name: 'guest') do |user|
      user.assign_attributes({
      email: "[email protected]",
      birthday: "1990-01-01",
      sex: 3})
      user.password = SecureRandom.urlsafe_base64
    end
  end

Dans mon cas, la table user a plusieurs colonnes, donc quand je me connecte à guest, j'intègre diverses informations en utilisant assign_attributes. Il peut être omis si ce n'est pas nécessaire.

4. Paramètres de routage

/config/routes.rb


  #réduction
  resource :session, only: [:create, :destroy] do
    post "guest_login", on: :collection
  end

Configurez le routage vers guest_login.

5. Créez un lien

:/app/assets/views/~/view.html.erb


<%= link_to "Connexion facile", :guest_login_session, method: :post %>

Intégrez ce qui précède si nécessaire.

Sommaire

Avec ce qui précède, la fonction de connexion simple peut être implémentée. Le point est ** find_or_create_by! ** dans la section 3. Vous pouvez rechercher «invité» à partir du nom de l'argument, renvoyer les données correspondantes si elles existent et en créer une nouvelle si elles n'existent pas. Avec ce paramètre, même si l'utilisateur invité est supprimé, vous pouvez vous reconnecter en tant qu'invité.

Dans une certaine mesure, j'ai créé l'application puis je l'ai présentée en plus, donc je pense qu'il y a des scènes où l'explication manque. Nous nous excusons pour toute insuffisance. J'apprécierais que vous puissiez le mettre en œuvre d'une manière qui vous convient en vous référant aux articles auxquels j'ai fait référence et à d'autres articles.

Enfin de côté

C'est mon premier article, mais lorsque j'ai écrit l'article, j'ai eu de nombreuses occasions de reconfirmer le sens des mots, ce qui a été une excellente expérience d'apprentissage. J'ai reconfirmé que je pouvais approfondir ma compréhension en diffusant ce que j'avais appris. À l'avenir, en plus d'étudier, j'aimerais faire de mon mieux pour poster.

Recommended Posts

Implémenter une fonction de connexion simple dans Rails
Implémenter la fonction d'application dans Rails
Implémenter la fonction de téléchargement CSV dans Rails
Implémentez la fonction de connexion dans Rails simplement avec le nom et le mot de passe (1)
Implémentez la fonction de connexion dans Rails simplement avec juste un nom et un mot de passe (2)
Implémentez la fonction de connexion simplement avec le nom et le mot de passe dans Rails (3)
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
Markdown implémenté dans Rails
[Rails] Un moyen simple d'implémenter une fonction d'auto-introduction dans votre profil
Fonction de notification simple dans Rails (uniquement lorsqu'elle est suivie)
[Rails] Implémenter la fonction de recherche d'utilisateurs
Implémenter l'authentification LTI dans Rails
2 Implémentez une analyse syntaxique simple en Java
[Rails] Implémenter la fonction de publication d'images
Implémenter la fonction de recherche de publication dans l'application Rails (méthode where)
[Rails] Implémentez la fonction d'enregistrement / suppression de carte de crédit dans PAY.JP
Ajoutez une fonction de recherche dans Rails.
[rails] Implémentation de l'écran de connexion dans la devise
3 Implémentez un interpréteur simple en Java
Implémenter la fonction PHP implode en Java
Implémenter un formulaire de contact dans Rails
[Ruby on Rails] Implémenter la fonction de connexion par add_token_to_users avec l'API
Fonction de connexion
1 Implémentez une analyse de phrase simple en Java
Implémenter la fonction d'enregistrement des utilisateurs et la fonction d'enregistrement de l'entreprise séparément dans Rails concevoir
J'ai essayé d'implémenter le traitement Ajax de la fonction similaire dans Rails
Les rails 6 (avec Webpacker en standard) implémentent la fonction de classement par étoiles
Comment implémenter la fonctionnalité de recherche dans Rails
Rails Ajout d'une fonction de connexion facile et facile
[Retrait des rails] Créez une fonction de retrait simple avec des rails
Essayez d'implémenter une fonction de connexion avec Spring-Boot
Créez quand même une fonction de connexion avec Rails
Comment implémenter la fonctionnalité de classement dans Rails
Implémenter des transitions de boutons à l'aide de link_to dans Rails
Implémenter la pagination des rails
[Rails] Fonction de catégorie
Group_by dans Rails
Les rails suivent la fonction
"Professeur, je souhaite implémenter une fonction de connexion au printemps" ① Hello World
[Rails] Fonction de notification
Paramètres de validation pour la fonction de connexion Ruby on Rails
Sortie de Hello World dans la fonction principale simple de kotlin
Créer une fonction d'authentification dans l'application Rails à l'aide de devise
Implémenter un bouton de partage dans Rails 6 sans utiliser Gem
Essayez d'implémenter la fonction de connexion avec Spring Boot
Comment implémenter une fonctionnalité similaire dans Rails
Implémenter des itérations dans View en rendant une collection [Rails]