2009-11-18 7 views
19

Alors je viens de faire un formulaire de changement de mot de passe pour mon application rails. C'est comme n'importe quel autre formulaire de changement de mot de passe très typique."S'il vous plaît confirmer quel utilisateur vous changez le mot de passe pour"

Ainsi, après quelques fois le tester j'ai commencé à voir une boîte popup disant

"Please confirm which user you are changing the password for"

Maintenant, ce qui m'a vraiment paniqué un peu car je sais que je n'ai pas écrit de code pour faire de telles choses et Je ne veux surtout pas que les utilisateurs changent les mots de passe des autres utilisateurs.

J'ai vite découvert qu'il s'agissait du gestionnaire de mot de passe de firefox. Alors maintenant je suis calmé à ce sujet, mais je ne veux pas que cela arrive à d'autres personnes utilisant mon site.

Comment firefox sait-il qu'il change un mot de passe? Peut-être que ce sont les noms de mes champs de mot de passe ou peut-être même mes formulaires d'action url (/ account/change_password)? Y at-il un moyen de le faire ne pas le faire? Quelqu'un d'autre a-t-il de l'expérience avec cela?

Répondre

17

Lorsque les utilisateurs de votre site se connectent pour la première fois, Firefox leur demande s'ils souhaitent enregistrer le mot de passe ou non. S'ils disent oui, le mot de passe est enregistré.

Maintenant, si l'utilisateur change son mot de passe sur votre site, Firefox ne le saura pas immédiatement. Mais lorsque l'utilisateur se connecte avec le nouveau mot de passe, Firefox reconnaîtra que le mot de passe que vous avez entré n'est pas ce qu'il contient. Donc, il demande si vous voulez enregistrer ce mot de passe.

Supposons que l'utilisateur possède deux comptes sur votre site maintenant et qu'ils modifient le mot de passe pour l'un d'entre eux. Quand ils vont se connecter avec cet utilisateur et que Firefox tente de mettre à jour ses enregistrements, il peut demander "pour quel utilisateur modifiez-vous le mot de passe?"

Ceci est une fonctionnalité côté client et ce n'est pas quelque chose que vous pouvez vraiment changer. L'utilisateur a choisi un navigateur qui garde la trace de ses comptes et ce n'est pas quelque chose que vous pouvez empêcher.

5

Les utilisateurs de notre site ne verront que cette erreur s'ils se connectent avec plusieurs comptes. Je ne ferais pas de changement à votre application basée sur ce comportement de Firefox.

+2

Ouais, je l'obtiens, je pense que je suis la plupart du temps juste curieux de savoir s'il est moyen facile pour que firefox ne sache pas ce qui se passe puisque ce n'est pas évident, même pour moi en tant que programmeur, que le dialogue vient de firefox et pas de mon site. – tybro0103

1

Il s'agit d'un problème spécifique à FireFox et il est assez facile à résoudre.

Le navigateur remarque plusieurs champs de mot de passe sur le formulaire et suppose que vous modifiez le mot de passe, mais il ne peut pas facilement déterminer quel utilisateur est connecté. Pour l'aider à sortir, renseignez vos utilisateurs nom dans le formulaire:

<INPUT TYPE="hidden" NAME="username" VALUE="<?php echo("$name"); ?>">

Quelque chose comme ça fonctionne, tant que vous définissez la variable en php premier!

+0

cela n'a pas fonctionné sur ma fin - quelqu'un d'autre? –

+0

Le champ de saisie ne peut pas être masqué. Avec un type normal = "texte" et une solution de contournement comme l'utilisation de style = "display: none" fonctionne bien. –

10

Quand j'ai eu le même problème (sur un formulaire de mot de passe de changement, jamais le formulaire de connexion) la seule façon que je pouvais éviter ce pop-up était de désactiver l'autocomplétion sur le formulaire de changement de mot de passe:

<form autocomplete="off" onsubmit="..." ...> 

Ceci est documenté dans le Mozilla Developer Network, mais cela signifie malheureusement que votre code HTML ne valide pas, comme discuté dans this Stack Overflow question. Un petit prix à payer pour réparer quelque chose que la plupart des utilisateurs supposent est un bug avec votre site Web.

+1

Fonctionne bien. Juste une note pour ceux qui ont le même problème: supprimez votre mot de passe dans Firefox avant de tester le auotocomplete = "off" fonctionne! –

1

Je n'ai pas réussi à le faire fonctionner avec le champ caché contenant le nom d'utilisateur. J'avais besoin d'avoir une entrée de texte contenant le nom d'utilisateur associé et Firefox ne vous demandera pas pour quel utilisateur vous voulez changer le mot de passe. De plus, cette entrée de texte peut être masquée à l'aide de CSS de base.

Ex:

<html> 
<form action="#" method="post"> 
    <input type="text" name="user" value="chose" style="display: none" /> 
    Pass: <input type="password" name="old_pass"/> 
    New pass: <input type="password" name="pass"/> 
    <input type="submit"/> 
</form> 
</html> 
3

Mettez sous la ligne à l'intérieur forme, il fonctionnera:

<input type ="text" name="username" value="" style="display:none"> 
+0

A travaillé pour moi, merci. –

+0

Cela fonctionne, vous pouvez également changer le nom = "nom d'utilisateur" avec n'importe quoi d'autre, par exemple name = "", parce que "nom d'utilisateur" peut être utilisé ailleurs. –

Questions connexes