[RUBY] [Rails] Donnez cet article à vous qui avez recherché "login nom de devise"

Donnez cet article à vous qui avez recherché dans "login name login"

introduction

Mon nom est yuki. Grâce à DMMWEBCAMP, je suis désormais ingénieur WEB, rassemblant mes amis pour développer des services, enseignant la programmation en tant que tuteur et profitant de ma vie d'ingénieur au quotidien.

Je suis sûr que vous êtes venu découvrir comment vous connecter avec votre nom et votre mot de passe en utilisant la gemme Rails, Devise, avec "login name login".

Pour vous, j'expliquerai aujourd'hui les articles connexes les plus compréhensibles autant que possible, et même la partie «Pourquoi le faire» afin que cela vous soit bénéfique.

Faites de votre mieux jusqu'à la fin si vous le souhaitez.

Parce que tu es moi dans le passé ...

Public cible de l'article

--Pour ceux qui veulent savoir comment se connecter à l'aide de devise

Comment réparer

Parlons maintenant de comment et pourquoi. Veillez à ne pas l'oublier dans l'ordre. En outre, la connexion avec un nom et un mot de passe est ci-après dénommée «connexion par nom».

Installez Devise et effectuez la configuration initiale

Tout d'abord, posons la conception comme une prémisse majeure.

Ajouter un appareil à Gemfile et installer

: white_check_mark: écrivez ce qui suit au bas du Gemfile

gem 'devise'

Exécutez: white_check_mark: bundle install. Vous pouvez désormais travailler avec la conception dans votre projet.

définir les paramètres initiaux

Une fois l'installation du bundle terminée, nous mettrons en place le modèle.

: white_check_mark: Exécutez rails g devise: install sur la ligne de commande (où vous exécutez la commande, comme un terminal).

Cette configuration initiale est requise pour créer un ** fichier de configuration de périphérique **. Si vous faites cela, vous pourrez effectuer les réglages nécessaires pour la connexion par nom plus tard.

Créez la table des utilisateurs nécessaire pour vous connecter

Ensuite, créez une table pour stocker les données utilisateur nécessaires pour la connexion de nom en premier lieu.

: white_check_mark: Exécutez rails g devise User sur la ligne de commande.

Ceci est un peu différent de «rails g model User», qui crée un modèle User, un fichier de migration, etc. via la fonction de devise. La raison pour laquelle cela est fait est qu'il crée automatiquement les colonnes nécessaires (où vous mettez des informations telles que le courrier électronique).

Créer un modèle utilisateur Ajouter une colonne de nom au fichier de migration

Si vous exécutez la commande précédente, vous trouverez un fichier de migration dans db / migrate /. Si vous faites rails db: migrate, vous pouvez créer la table utilisateur minimale requise pour vous connecter avec la fonction de devise, mais cette fois nous voulons activer" login par nom ", nous allons donc ajouter une colonne de nom. .. La raison est simple: l'emplacement où placer le nom de l'utilisateur n'existe pas par défaut.

Veuillez l'ajouter comme ceci.

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


#Omission
      ## 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 #Je l'ai ajouté ici! !! !! !! !! !! !!
      t.timestamps null: false
#Omission

: white_check_mark: Ajoutez le code ci-dessus et exécutez rails db: migrate

Vous venez de créer une table User avec une colonne de nom.

Visualisez le fichier de vue requis pour que le nom puisse être enregistré au moment du nouvel enregistrement

Maintenant que nous sommes prêts à enregistrer, nous pourrons envoyer les informations de nom sur le nouvel écran d'inscription. Cependant, dans l'état actuel, ** je ne peux pas modifier l'écran utilisé pour la nouvelle inscription ou la connexion du dispositif **. Parce que vous ne pouvez pas voir le fichier.

Pour pouvoir éditer réellement : white_check_mark: exécutez la commande suivante sur la ligne de commande.

rails rails g devise:views

Maintenant, un ensemble de dossiers de devise est créé sous app / views, et vous pouvez réécrire le nouvel écran d'enregistrement et de connexion de l'appareil.

Quel est le fichier le plus important?

--L'enregistrement est nouveau.html.erb dans les enregistrements --Login est nouveau.html.erb dans les sessions

est.

Ajouter un formulaire pour donner un nom au nouvel écran d'inscription

Actuellement, seul le courrier électronique peut être envoyé à partir du nouvel écran d'inscription.

: white_check_mark: Modifions un peu ceci afin que nous puissions envoyer les informations de nom.

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 %>

<!--Ajouter à partir d'ici--!>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name, autofocus: true, autocomplete: "name" %>
  </div>
<!--Ajouter ici--!>

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

  <--!Ci-dessous est omis!-->

Si tu peux faire ça

Exécutez: white_check_mark: rails s pour accéder localhost: 3000 / users / sign_up. Ce n'est pas grave si vous avez une forme de nom.

Cependant ...

Autoriser l'envoi des informations de nom au moment du nouvel enregistrement

Lorsque vous suivez les étapes ci-dessus, le nouvel enregistrement réussira probablement et l'écran initial de Rails apparaîtra, mais vous devriez voir ces caractères dérangeants sur la ligne de commande.

Unpermittted parameter: :name

C'est parce que la valeur: nom ne peut pas être envoyée. est ce que cela signifie. Si vous lisez cet article, vous avez probablement entendu le terme «paramètres forts», et c'est exactement ce que c'est.

Par défaut, vous n'êtes pas autorisé à donner la valeur de: name, alors autorisons cela.

: white_check_mark: modifiez app / controllers / application_controller.rb. Veuillez ajouter ce qui suit.

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

Vous pouvez considérer ce fichier comme un contrôleur pour l'ensemble de l'application. Ce que vous écrivez ici s'applique lorsque vous exécutez le traitement de l'application.

before_action: configure_permitted_parameters, if :: devise_controller? Pour le dire simplement, cela signifie "si vous voulez traiter le modèle, faites quelque chose appelé configure_permitted_parameters".

Alors qu'est-ce que configure_permitted_parameters? C'est la méthode définie en dessous. Il s'appelle devise_parameter_sanitizer.permit (: sign_up, keys: [: name]).

Pour expliquer cela d'une manière facile à comprendre, cela signifie "deviseu, autorise l'envoi de la valeur: nom lors de l'inscription! Mais n'autorise pas d'autres valeurs invalides!".

: white_check_mark: Après avoir défini ce qui précède, réessayez un nouvel enregistrement. Vous ne devriez plus voir le message d'erreur précédent sur la ligne de commande.

Vous ne pouvez pas vous déconnecter! Vous pouvez le faire en supprimant le cookie. Pour MAC, essayez d'appuyer sur le bouton «i» à côté de l'URL.

Modifiez le formulaire pour envoyer un e-mail sur l'écran de connexion au formulaire pour envoyer le nom

: white_check_mark: Maintenant que vous pouvez enregistrer votre nom à partir du nouvel écran d'enregistrement, modifions également l'écran de connexion.

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 %>

<!--Ajouter à partir d'ici--!>
  <div class="field">
    <%= f.label :name %><br />
    <%= f.text_field :name, autofocus: true, autocomplete: "name" %>
  </div>
<!--Ajouter ici--!>

<!--Supprimer d'ici--!>
  <div class="field">
    <%= f.label :email %><br />
    <%= f.email_field :email, autofocus: true, autocomplete: "email" %>
  </div>
<!--Supprimé jusqu'à présent--!>

  <--!Ci-dessous est omis!-->

Suppression du formulaire pour le courrier électronique et ajout du formulaire pour le nom.

: white_check_mark: Maintenant, connectons-nous avec le nom et le mot de passe que vous avez enregistrés précédemment.

−−− −− − Oui, je ne peux pas. C'est ennuyant. En regardant la ligne de commande, je vois à nouveau ʻParamètres non autorisés :: nom`. Corrigeons ça.

Changer la valeur utilisée pour la connexion de l'email au nom

Cette fois, il est en fait différent si quelque chose doit être enregistré dans application_controller comme dans le cas d'un nouvel enregistrement. Pour corriger les facteurs qui sont joués ici cette fois, vous devez accéder au fichier contenant les paramètres de conception.

souvenez-vous s'il vous plaît. C'est le fichier que vous avez créé lorsque vous avez fait rails g devise: install.

: white_check_mark: Ouvrez maintenant config / initializers / devise.rb.

Si vous utilisez VSCcode, vous pouvez rechercher par nom de fichier en appuyant sur cmd (ctrl) + p.

Un fichier avec divers paramètres tels que Ujauja s'ouvrira, mais ce n'est pas grave. Je peux rechercher une chaîne de caractères avec cmd + f, mais veuillez la saisir dans config.au.

Vous devriez trouver l'instruction # config.authentication_keys = [: email]. Ici, imaginez définit la clé utilisée pour l'authentification (c'est-à-dire l'authentification, pensez que c'est la valeur utilisée pour la connexion), donc décommentez ici et changez l'email en nom. Faisons le.

Cela signifie # config.authentication_keys = [: nom].

Voyons maintenant si nous pouvons nous connecter! Je suis sûr que vous pouvez réussir sans aucune erreur.

Résumé

C'est comme ça.

Lorsque vous continuez à étudier, réfléchissez bien à la question "Pourquoi cela fonctionne-t-il comme vous le souhaitez lorsque vous rédigez la description?"

Je t'encourage. Si vous rencontrez des problèmes, DM je vous attends ~.

Présentant que j'écris également un tel article

[Alumni] Ce que je veux dire aux gens qui envisagent de participer au DMM WEB CAMP

Présentation de l'entreprise

Je travaille actuellement pour une société de logistique x informatique appelée Dialog Co., Ltd.. Depuis septembre 2020, nous ne recrutons pas d'ingénieurs, mais nous recherchons diverses autres professions, veuillez donc visiter la page Wantedly. Regarde s'il te plait. Je serais heureux si un jour quelqu'un postulait pour mon opportunité Qiita.

Article d'entretien (impressions après avoir rejoint l'entreprise)

Recommended Posts

[Rails] Donnez cet article à vous qui avez recherché "login nom de devise"
[rails devise] Comment transférer les utilisateurs qui ne sont pas connectés à la page de connexion
[Rails] Restrictions de fonction dans l'appareil (connexion / déconnexion)
Comment changer le nom de l'application dans les rails
[Rails] Ajouté dans le modèle: nom d'utilisateur non ajouté à la base de données
Comment implémenter la connexion invité en 5 minutes sur le portefeuille de rails
Introduire la conception avec Rails pour implémenter la fonctionnalité de gestion des utilisateurs
[Tutoriel Rails Chapitre 2] Que faire lorsque vous faites une erreur dans le nom de la colonne
Mémo qui passe à l'écran de connexion si vous n'êtes pas connecté avec l'appareil
À vous qui êtes troublé par des points décimaux inattendus en Java
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)
Super facile en 2 étapes! Comment installer la devise! !! (version rails 5)
Implémentez la fonction de connexion simplement avec le nom et le mot de passe dans Rails (3)
[Organisation] À vous qui êtes embrouillé avec le rendu et la redirection vers