Concevoir: Désactiver le mot de passe de confirmation lors de l'inscription
Je suis à l'aide de Concevoir pour les Rails. Par défaut dans le processus d'enregistrement, de Concevoir oblige les utilisateurs à taper le mot de passe deux fois pour la validation et l'authentification. Comment puis-je le désactiver?
- Que faites-vous si une personne fait une faute de frappe quand ils tapez le mot de passe dans une boîte? Il y a des raisons pour avoir une confirmation de mot de passe sur les formulaires, et vous devriez être sûr de l'enlever
- yup. je tiens à le retirer. la simplification de la procédure d'enregistrement. toute suggestion sur la façon de le désactiver?
- Une sorte de réponse tardive, mais vous pouvez utiliser le mail de réinitialisation de mot de passe si les utilisateurs le type de mal. Beaucoup de convivialité les gens commencent à préférer cette approche, comme c'est plus simple pour l'utilisateur.
- stackoverflow.com/questions/11641901/...
Vous devez vous connecter pour publier un commentaire.
Pour désactiver le mot de passe de confirmation vous pouvez simplement supprimer le
password_confirmation
champ dans le formulaire d'inscription. Ceci désactive la nécessité de confirmer le mot de passe entièrement!rails g devise:views
password_confirmation
section dansapp\views\devise\registrations\new.html.erb
Une façon de le faire:
La raison pour laquelle cela fonctionne réside dans
lib/devise/models/validatable.rb
dans le dispositif source:Noter que la validation est déclenché uniquement si
password_required?
retournetrue
, etpassword_required?
sera de retourfalse
si lepassword_confirmation
champ estnil
.Parce que, lorsque le
password_confirmation
champ est présent dans le formulaire, il sera toujours inclus dans les paramètres de hachage , comme une chaîne vide s'il est laissé vide, la validation est déclenchée. Toutefois, si vous supprimez l'entrée de la forme, l'password_confirmation
dans les params seranil
, et, par conséquent, la validation ne sera pas déclenchée.Il semble que si vous venez de supprimer la attr_accessible exigence à partir du modèle, il fonctionne très bien sans elle.
Sur une note de côté, je suis d'accord avec cette pratique, dans les rares cas où il y a une faute de frappe, l'utilisateur peut simplement utiliser le mot de passe de récupération pour récupérer leur mot de passe.
Je ne suis pas familier avec les Concevoir, mais si vous avez accès au modèle dans le contrôleur avant d'enregistrer/de validation pourriez-vous faire quelque chose comme
Pour l'amour de Rails 4 utilisateurs qui trouvent cette question, il suffit de supprimer
:password_confirmation
du permis params, qui vous déclarer enApplicationController.rb
.Solution la plus simple:
Supprimer :traitement pouvant être validé de
😉
Vous avez juste besoin de retirer la password_confirmation champ de votre formulaire.
Voir wiki
https://github.com/plataformatec/devise/wiki/How-To:-Allow-users-to-edit-their-account-without-providing-a-password
Concevoir par défaut de validations (lib/concevoir/modèles/traitement pouvant être validé.rb):
et méthode:
Nous avons besoin de remplacer Concevoir mot de passe par défaut de validation.
Placez le code suivant à la fin pour ne pas être écrasés par d'autres de Concevoir ses propres paramètres.
Et votre modèle devrait ressembler à ceci:
Puis retirez le password_confirmation champ dans le formulaire d'inscription.
Je pense que c'est le moyen le plus simple pour désactiver le mot de passe de confirmation:
https://github.com/plataformatec/devise/wiki/Disable-password-confirmation-during-registration