¿Por qué este formulario no solicita al navegador que ofrezca guardar la contraseña?

Tengo el siguiente formulario que se coloca en la página a través de AJAX (jQuery AJAX si eso ayuda):

Email:
Password:

Siguiendo las sugerencias hechas en esta pregunta , agregué el iframe y lo apunto. Sin embargo, los navegadores aún no solicitarán a los usuarios que guarden la contraseña. ¿Alguna idea de por qué?

EDITAR: Acabo de notar que Firefox pedirá guardar la contraseña, pero no la colocará en el formulario una vez que regrese a la página de inicio de sesión.

Puedes probar la técnica de “enviar dos veces”.

En resumen: en el primer envío, cancélelo, pero vuelva a activarlo después de la autenticación exitosa y no lo cancele.

Más detallado:

Necesita volver a escribir su formulario de esta manera:

/back-redirector simplemente redirige a la misma página o a la página principal. Estoy redireccionando a la misma página.

Y su función App.Auth.login() debe return false cuando se llame por primera vez, y return true si la primera llamada ha resultado en un inicio de sesión exitoso.

Me gusta esto:

 letTheLoginFormDoTheSubmit = false; // flag to show that login was successful // and we need to trigger password save prompt. login: function() { if (letTheLoginFormDoTheSubmit) { return true; } // Do the login // Start ajax ajax(login, password, function() { // This function is called when AJAX has completed if (loginIsGood) { letTheLoginFormDoTheSubmit = true; loginForm.submit(); // trigger submit again }); return false; } 

¿Así que lo que ocurre?

  1. Cuando se llama a su función de inicio de sesión la primera vez que inicia la secuencia de inicio de sesión, y devuelve falso para detener el envío de formulario habitual.
  2. La función de inicio de sesión recibe datos, y si el inicio de sesión es bueno, lo guarda en el lado del navegador, levanta la bandera “todo bien, activa la solicitud de guardar contraseña” y envía el formulario nuevamente.
  3. Pero debido a que flag está volando, la función de inicio de sesión no vuelve a iniciar sesión, sino que permite que el navegador realice el envío normalmente, y esto activa la solicitud de guardar la contraseña.

El formulario se envía a la URL que simplemente redirecciona el navegador y no funciona.

Algunas advertencias:

  • La página se volverá a cargar, así que guarde su cookie de autenticación de alguna manera localmente, o deje que el redirector sepa cuál es, para que el redireccionador pueda incluirla en una redirección.
  • Todos los datos del formulario pueden pasar por este segundo envío. Para evitar esto, elimine los campos relevantes del formulario o elimine los atributos del nombre.
  • Redirector es necesario en el lado del servidor.

Pero, en general, no es un cambio importante en el proceso de inicio de sesión y debe activar el aviso de guardar contraseña en cada navegador.