2009-11-18 24 views
19

Vì vậy, tôi vừa tạo một mẫu mật khẩu thay đổi cho ứng dụng đường ray của mình. Nó giống như bất kỳ hình thức thay đổi mật khẩu rất điển hình nào khác."Vui lòng xác nhận người dùng nào bạn đang thay đổi mật khẩu cho"

Vì vậy, sau một vài lần thử nghiệm nó ra tôi bắt đầu nhìn thấy một hộp popup nói rằng

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

Bây giờ điều này thực sự hơi bối rối tôi ra một chút kể từ khi tôi biết tôi đã không viết bất kỳ mã để làm những việc như vậy và Tôi chắc chắn không muốn người dùng thay đổi mật khẩu của người dùng khác.

Tôi sớm phát hiện ra đó là trình quản lý mật khẩu của firefox. Vì vậy, bây giờ tôi đã bình tĩnh lại về nó, nhưng vẫn còn, tôi không muốn điều này xảy ra với những người khác sử dụng trang web của tôi.

Firefox biết nó đang thay đổi mật khẩu như thế nào? Có lẽ đó là tên của các trường mật khẩu của tôi hoặc thậm chí có thể là url hành động của biểu mẫu của tôi (/ account/change_password)? Có cách nào để làm cho nó không làm điều này? Có ai khác có kinh nghiệm với điều này không?

Trả lời

17

Khi người dùng trang web của bạn đăng nhập lần đầu tiên, Firefox sẽ hỏi người dùng xem họ có muốn lưu mật khẩu hay không. Nếu họ nói có, mật khẩu sẽ được lưu lại.

Bây giờ, nếu người dùng thay đổi mật khẩu của họ trên trang web của bạn, Firefox sẽ không biết mật khẩu đó ngay lập tức. Nhưng khi người dùng đăng nhập bằng mật khẩu mới, Firefox sẽ nhận ra rằng mật khẩu bạn đã nhập không phải là mật khẩu của nó. Vì vậy, nó sẽ hỏi nếu bạn muốn tiết kiệm rằng mật khẩu.

Giả sử người dùng có hai tài khoản trên trang web của bạn ngay bây giờ và họ thay đổi mật khẩu cho một trong số họ. Khi họ đăng nhập với người dùng đó và Firefox cố gắng cập nhật các bản ghi của nó, nó có thể hỏi "người dùng nào bạn đang thay đổi mật khẩu?"

Đây là chức năng phía máy khách và không phải là thứ bạn thực sự có thể thay đổi. Người dùng đã chọn một trình duyệt theo dõi tài khoản của họ và nó không phải là thứ bạn có thể ngăn chặn.

5

Người dùng trang web của chúng tôi sẽ chỉ thấy lỗi này nếu họ đăng nhập bằng nhiều tài khoản. Tôi sẽ không thay đổi ứng dụng của bạn dựa trên hành vi này từ firefox.

+2

Yeah, tôi nhận được nó, tôi đoán tôi chủ yếu chỉ tò mò muốn biết nếu có cách dễ dàng để làm cho firefox không biết những gì đang xảy ra vì nó không rõ ràng, ngay cả với tôi như là lập trình viên, rằng cuộc đối thoại đến từ firefox và không phải trang web của tôi. – tybro0103

1

Đây là vấn đề cụ thể của FireFox và rất dễ sửa.

Trình duyệt thông báo nhiều trường mật khẩu trên biểu mẫu và giả sử bạn đang thay đổi mật khẩu nhưng không thể dễ dàng biết được người dùng nào đã đăng nhập. Để giúp nó ra, cư người dùng của bạn đặt tên cho thành dạng:

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

Something như thế sẽ làm việc, miễn là bạn đặt biến trong php đầu tiên!

+0

điều này không hoạt động trên đầu của tôi - bất kỳ ai khác? –

+0

Không thể ẩn trường nhập. Với loại bình thường = "văn bản" và cách giải quyết như sử dụng style = "display: none" hoạt động tốt. –

10

Khi tôi có cùng một vấn đề (trên một hình thức thay đổi mật khẩu, không bao giờ biểu mẫu đăng nhập) cách duy nhất tôi có thể tránh popup này là để vô hiệu hóa tự động hoàn về hình thức thay đổi mật khẩu:

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

Đây là tài liệu trong Mozilla Developer Network nhưng thật không may có nghĩa là HTML của bạn sẽ không xác thực, như được thảo luận trong this Stack Overflow question. Một mức giá nhỏ để trả tiền để sửa một cái gì đó mà hầu hết người dùng sẽ giả định là một lỗi với trang web của bạn.

+1

Làm việc tốt. Chỉ cần một lưu ý cho những người có cùng một vấn đề: xóa mật khẩu của bạn trong Firefox trước khi thử nghiệm các công trình auotocomplete = "off"! –

1

Tôi không quản lý để làm cho nó hoạt động với trường ẩn chứa tên người dùng. Tôi cần có một đầu vào văn bản có chứa tên người dùng được liên kết và Firefox sẽ không hỏi bạn người dùng nào bạn muốn thay đổi mật khẩu. Hơn nữa, đầu vào văn bản có thể được ẩn bằng cách sử dụng CSS cơ bản.

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

Đặt phía dưới đường bên trong hình thức, nó sẽ làm việc:

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

Làm việc cho tôi, cảm ơn. –

+0

Tính năng này hoạt động, bạn cũng có thể thay đổi tên = "tên người dùng" bằng bất kỳ thứ gì khác, ví dụ name = "", vì "tên người dùng" có thể được sử dụng ở nơi khác. –

Các vấn đề liên quan