2009-11-18 16 views
19

これで、私は自分のレールアプリのパスワードフォームを変更しました。これは他の非常に典型的なパスワード変更フォームと同じです。"どのユーザーがパスワードを変更しているのかを確認してください"

だから、数回はそれをテストした後、私は今、この私が、私はそのようなことを行うには任意のコードを書いていなかった知っているので、本当に少し私をびびる

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

を言ってポップアップボックスを見始めました私は間違いなくユーザーが他のユーザーのパスワードを変更しないようにします。

私はすぐにそれがfirefoxのパスワードマネージャーであることを知った。だから私はそれについて落ち着いていますが、それでも私のサイトを使って他の人にこれを起こさせたくありません。

firefoxは、パスワードを変更していることをどのように知っていますか?多分私のパスワードフィールドの名前か私のフォームアクションURL(/ account/change_password)ですか?これをしないようにする方法はありますか?他の誰かがこの経験をしていますか?

答えて

17

サイトのユーザーが初めてログインすると、パスワードを保存するかどうかを確認するメッセージが表示されます。 「はい」と答えた場合は、パスワードが保存されます。

ユーザーが自分のサイトでパスワードを変更した場合、Firefoxは直ちにそれについて知りません。しかし、ユーザーが新しいパスワードでログインすると、Firefoxは入力したパスワードがファイル上のパスワードではないことを認識します。そこで、をパスワードのパスワードに保存するかどうかを尋ねます。

あなたのサイトに2つのアカウントがあり、そのうちの1つにパスワードが変更されたとします。そのユーザーとログインし、Firefoxがそのレコードを更新しようとすると、「どのユーザーがパスワードを変更していますか?」と尋ねることがあります。

これはクライアント側の機能であり、実際に変更できるものではありません。ユーザーは自分のアカウントを追跡するブラウザを選択しましたが、これはあなたが防ぐことのできるものではありません。

5

私たちのサイトのユーザーは、複数のアカウントでログインする場合にのみこのエラーが表示されます。私はfirefoxからのこの動作に基づいてアプリケーションに変更を加えるつもりはありません。

+2

ええ、私はそれを得る、私は簡単な方法があるかどうか、私は知っているほとんどはちょうど好奇心が強いと思いますよ私がプログラマとしても、対話はFirefoxであり、私のサイトではないことが明らかではないので、Firefoxは何が起こっているのか分からないようにする。 – tybro0103

1

これはFireFox固有の問題であり、修正するのは簡単です。

ブラウザはフォーム上の複数のパスワードフィールドに気づき、パスワードを変更していると想定していますが、どのユーザーがログオンしているかは簡単には分かりません。それを支援するために、ユーザーがフォームに名前を付ける移入:そのような

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

何かがあれば、あなたが最初にPHPで変数を設定すると、動作します!私は同じ問題を抱えていた

+0

これは私の目的のためには機能しませんでした。 –

+0

入力フィールドを非表示にすることはできません。通常のtype = "text"では、style = "display:none"を使用するような回避策がうまくいきます。 –

10

(パスワード変更フォーム、決してログインフォーム上で)私はこのポップアップを避けることができる唯一の方法は、パスワード変更フォームの自動補完を無効にすることでした:

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

これが文書化されていますMozilla Developer Networkにありますが、残念ながら、this Stack Overflow questionで説明されているように、HTMLは検証されません。ほとんどのユーザーが想定するものを修正するために支払う小さな値段は、あなたのウェブサイトのバグです。

+1

うまくいきます。同じ問題を抱えている人のためのメモ:auotocomplete = "off"のテストの前にFirefoxでパスワードを削除してください! –

1

ユーザー名を含む非表示のフィールドでは機能しませんでした。関連するユーザー名を含むテキスト入力が必要でしたが、Firefoxはパスワードを変更するユーザーを尋ねません。さらに、そのテキスト入力は、基本的なCSSを使用して隠すことができます。

例:

フォーム内の線の下に入れて
<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

、それは動作します:

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

私のために働いた、ありがとう。 –

+0

これは、 "username"が他の場所で使用されている可能性があるため、name = "username"など、他のものでname = "username"を変更することもできます。 –

関連する問題