2009-10-25 11 views
6

A veces Microsoft hace algo tan increíblemente tonto que me daña la cabeza. Ayúdame a descubrir que realmente no es el caso ... ¡por favor!IE no ofrece guardar la contraseña del formulario ASP.NET

Tengo un problema con la página de inicio de sesión de un sitio ASP.NET (3.5) que estoy desarrollando por el cual IE (7 u 8 ... no puede soportar abrir 6) no ofrece guardar la contraseña cuando un usuario inicia sesión. He comprobado otros navegadores y Firefox, Chrome y Safari ofrecen la contraseña para guardar la contraseña. También confirmó que el uso de la contraseña de IE en mis cuadros de prueba funciona correctamente en otros sitios y, por ej. Google etc. funciona bien.

La búsqueda que he hecho ha aparecido muy poco, pero lo poco que apareció parece sugerir que IE no ofrecerá guardar una contraseña si el formulario en la página contiene más de dos controles de texto. Ese es el caso con mi formulario que también tiene controles para permitir que un usuario se registre. Y cuando elimino estos controles adicionales, IE mágicamente solicita guardar la contraseña, por lo que parece ser cierto.

Ahora ... si ASP.NET me permitiera tener varios formularios, todo estaría bien y podría separar las dos funciones en formularios independientes y IE me preguntaría si desea guardar las contraseñas. Pero, ASP.NET no me permite hacer esto, ya que solo permite un formulario único. Podría mezclar un formulario non runat = server allí e intentar hacer esto, pero ¿adivina qué? Debido a que mi página utiliza una página maestra, cualquier etiqueta de formulario que agregue se elimina automáticamente, incluso si se trata de un formulario que no es runat = server.

Por lo tanto, no veo ninguna forma de evitar esto sin cambiar fundamentalmente lo que estaba tratando de lograr. Parece que tengo que explicarles a mis usuarios que no se les pedirá que guarden sus contraseñas si usan IE (un producto de Microsoft) porque desarrollé mi sitio con ASP.NET (err ... un producto de Microsoft).

Si esto es así, no puedo olvidar lo ridículo que es esto. Si alguien puede ofrecer alguna idea sobre cómo evitarlo, puede decirme que lo he entendido mal y que soy un idiota grande y estúpido, o simplemente quiero confirmar que no soy solo yo el que piensa que esto es monumentalmente tonto, entonces por favor, por favor hazlo.

Para que conste, realmente no quiero (y no veo por qué debería hacerlo) comprometer mi diseño y dividir mis páginas en dos (lo que resultará en una peor experiencia para el usuario).

+0

Curiosa decisión de diseño por parte de MS. No tengo idea de la motivación que hay. En cuanto a su diseño ... ¿Por qué no simplemente ofrece mantener al usuario conectado si está convencido de que el ahorro de contraseñas es un factor decisivo para los usuarios? ¿O haces esto también? – Bryan

+0

Sí, creo que va a ser mi única opción, solo esperaba la confirmación de ese comportamiento, ya que hay muy pocas cosas que he podido encontrar en él. Y, como dices, es curioso. No es tanto que el ahorro de contraseñas sea un factor decisivo, solo es difícil de explicarle a cualquiera que pueda preguntar por qué no es posible y por qué Microsoft platform + Microsoft browser = Fail, en este caso particular. – BinarySolo

+0

¿Ha intentado utilizar cuadros de texto HTML sin formato con un formulario que se envía de regreso a una página aspx? – Chris

Respuesta

2

@Chris Eso es lo que busqué al final.

Para beneficio de cualquier otra persona, todavía tengo mis controles de activación en forma runat = server y los proceso en el código para esa página. Luego tengo un segundo formulario HTML estándar con campos de texto de entrada HTML que se publica en una página .NET diferente. Esto se relaciona con el inicio de sesión de los usuarios. Recojo los valores en esta página a través de Request.Form y trato con el inicio de sesión desde aquí.

Upsides:

funciona todo y usuarios obtienen sus datos de acceso recordados como se esperarían.

Desventajas:

he perdido la capacidad de utilizar un MasterPage (ya que necesito dos formas en la página), así que efectivamente he tenido que duplicar la plantilla - no me gusta tanto.

Si el inicio de sesión de los usuarios no es válido o causa algún tipo de error, tengo que redireccionar a la página inicial y pasarle una bandera para que muestre un mensaje de error relevante. Tampoco me gusta mucho.

Como digo, sin embargo, simplemente funciona y en este caso eso es lo más importante. Gracias por tu contribución.

+0

¿Por qué no simplemente agrega un javascript a la página que se ejecuta cuando se hace clic en el botón de inicio de sesión que elimina los otros cuadros de texto de la página? – Michael

+0

Puede usar una página maestra y tener contenido fuera de la etiqueta de formulario ASPX. Puede ser difícil trabajar en ciertos diseños, pero si puede usar el posicionamiento absoluto o relativo, entonces tal vez no sea tan malo. Solo debe colocar un titular de posición de contenido en la página maestra que está fuera de la etiqueta de formulario, ya sea arriba o abajo, y luego coloque el control de contenido en su página de contenido. Un buen ejemplo de eso, que probablemente ya haya utilizado, es colocar uno en la sección principal para agregar guión/estilo en una página de contenido. – eselk

Cuestiones relacionadas