es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Rellenar campos de entrada de contraseñas en el cliente.

Esta pregunta se ha planteado de muchas formas, pero ninguna se ajusta a mis necesidades. Estoy trabajando en un proyecto de Razor parcialmente completo; el desarrollador original ha dejado nuestra oficina y no le preocupaba mucho asegurar los campos de contraseña, ya que los dejó todos en texto claro.

Estos campos de contraseña autorizan varios aspectos (acceso primario y secundario de Ftp, Ftp en AS400 y envío de correos), por lo que no están relacionados con los formularios de inicio de sesión / envío. Cuando cambié estos campos de texto a contraseña, se convierten en campos en blanco, independientemente del contenido del Modelo de Vista, y esto debería ser el comportamiento correcto, según las numerosas respuestas que he visto buscando en Google.

Mi problema es el siguiente: el usuario necesita saber al menos si se ha configurado una contraseña (ver una cadena de * u cualquier otro carácter de máscara que use el navegador), por lo que necesito mostrarle ese valor para que sepa si el servicio está configurado, y lo mejor sería permitirle también revelar la contraseña para verificar que sea correcta. La opción de no actualizar el campo específico en la base de datos si se deja en blanco no es una opción.

Este sitio solo funciona en la intranet, por lo que no hay preocupación por los hackers que monitorean la conexión u otras amenazas similares.

He probado todas (creo) las combinaciones posibles, incluyendo la construcción manual del elemento de entrada a través de HTML, utilizando los ayudantes @Html.TextFor y @Html.PasswordFor, decorando el miembro correspondiente en el modelo de vista con [DataType(DataType.Password)]. Los datos se enlazan cuando se carga la página, por lo que no puedo recuperar datos mediante llamadas ajax.

Soy relativamente nuevo en Razor, ya que mis dos últimos proyectos son completamente en PHP.

Gracias por cualquier sugerencia.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Solución para mostrar campos de contraseña ocultos en un proyecto tipo Razor

    Según el comportamiento estándar, cuando los campos de contraseña se cambian de texto a contraseña, se muestran como campos en blanco en el proyecto Razor. Sin embargo, en este caso, el usuario necesita saber al menos si se ha configurado una contraseña y ver un carácter de máscara en el campo para confirmar. Para lograr esto, podemos utilizar el siguiente enfoque:

    1. Utilice el elemento HTML input con type="password" para crear el campo de contraseña.
    2. Establezca el atributo value del elemento input con el valor de contraseña obtenido del ViewModel.
    3. Para mostrar el carácter de contraseña enmascarado, reemplace el valor real de la contraseña con la misma cantidad de caracteres de máscara utilizando el método string.padLeft.
    4. Agregue un checkbox o botón junto al campo de contraseña para alternar entre los valores reales y enmascarados del campo de contraseña. Esto se puede lograr utilizando JavaScript y jQuery.

    Código de ejemplo:

    @model PasswordViewModel
    
    <!-- Mostrando el campo de contraseña como valor enmascarado -->
    <input type="password" id="passwordField" value="@Model.Password.PadLeft(Model.Password.Length, '*')" readonly="">
    
    <!-- Checkbox para alternar entre el valor real y enmascarado de la contraseña -->
    <label for="showPassword">Mostrar Contraseña</label>
    <input type="checkbox" id="showPassword" onclick="togglePassword()">
    
    <script>
        function togglePassword() {
            var passwordField = document.getElementById("passwordField");
            var showPassword = document.getElementById("showPassword");
            if (showPassword.checked) {
                passwordField.value = "@Model.Password";
            } else {
                passwordField.value = "@Model.Password.PadLeft(Model.Password.Length, '*')";
            }
        }
    </script>
    

    Este enfoque mostrará el campo de contraseña como caracteres enmascarados y permitirá al usuario alternar entre los valores reales y enmascarados de la contraseña utilizando un checkbox o botón.

Comments are closed.