none
Modificar recordar credenciales en Implementación de autenticación de formularios simple RRS feed

  • Pregunta

  • Buenas. Tengo que continuar un desarrollo de una aplicación que se ejecuta en red local. He puesto una implementación de autenticación mediante formularios simple. Resulta que tengo un botón de Recordar para que el sistema recuerde las credenciales de los usuarios de la empresa pero me han dicho que cuando lo dejan 10 minutos inactivos o así se le borra las credenciales y me han preguntado si se les podría guardar al menos más tiempo. Paso a poner el código:

    Este código es en el web.config

    <authentication mode="Forms">
       <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH">
       </forms>
    </authentication>
    
    <authorization>
       <deny users="?" />
    </authorization>

    El código siguiente es el formulario Logon.asxp:

    <%@ Page Language="C#" %>
    <%@ Import Namespace="System.Web.Security" %>
    
    <script runat="server">
      void Logon_Click(object sender, EventArgs e)
      {
        if ((UserEmail.Text == "nombreDeUsuario***") && 
                (UserPass.Text == "contraseña***"))
          {
              FormsAuthentication.RedirectFromLoginPage 
                 (UserEmail.Text, Persist.Checked);
          }
          else
          {
              Msg.Text = "Credenciales inv&aacute;lidas. Por favor, intentelo de nuevo.";
          }
      }
    </script>
    <html>
    <head id="Head1" runat="server">
      <title>Forms Authentication - Login</title>
    </head>
    <body>
      <form id="form1" runat="server">
        <h3>Introduzca usuario y contrase&ntilde;a</h3>
        <table>
          <tr>
            <td>
              Usuario:</td>
            <td>
              <asp:TextBox ID="UserEmail" runat="server" /></td>
            <td>
              <asp:RequiredFieldValidator ID="RequiredFieldValidator1" 
                ControlToValidate="UserEmail"
                Display="Dynamic" 
                ErrorMessage="No puede estar vac&iacute;o." 
                runat="server" />
            </td>
          </tr>
          <tr>
            <td>
              Contrase&ntilde;a:</td>
            <td>
              <asp:TextBox ID="UserPass" TextMode="Password" 
                 runat="server" />
            </td>
            <td>
              <asp:RequiredFieldValidator ID="RequiredFieldValidator2" 
                ControlToValidate="UserPass"
                ErrorMessage="No puede estar vac&iacute;o." 
                runat="server" />
            </td>
          </tr>
          <tr>
            <td>
              &iquest;Recordarme?</td>
            <td>
              <asp:CheckBox ID="Persist" runat="server" /></td>
          </tr>
        </table>
        <asp:Button ID="Submit1" OnClick="Logon_Click" Text="Entrar" 
           runat="server" />
        <p>
          <asp:Label ID="Msg" ForeColor="red" runat="server" />
        </p>
      </form>
    </body>
    </html>

    Como se puede ver lo que me interesa es el el control asp:Checkbox con ID="Persist". Se supone que cuando marca ese checkbox el sistema va a guardar las credenciales del usuario y lo hace pero creo que por poco tiempo. ¿Hay alguna forma de que se guarde más tiempo las credenciales o la política de seguridad es así y no hay nada que pueda hacer?

    Gracias de antemano. Creo que he aportado todo lo necesario.


    • Editado magomez89 lunes, 21 de diciembre de 2015 10:54 errores de escritura
    lunes, 21 de diciembre de 2015 10:53

Respuestas

Todas las respuestas

  • He modificado lo siguiente en el web.config:

    <authentication mode="Forms"> <forms loginUrl="Logon.aspx" name=".ASPXFORMSAUTH" cookieless="UseCookies"

    slidingExpiration="true" timeout="600"> </forms> </authentication> <authorization> <deny users="?" /> </authorization>

    Según msdn Microsoft en el post Elemento forms para authentication (Esquema de configuración de ASP.NET) que podeis ver aquí:
    • cookieless="UseCookies" especifica que siempre se utilizarán cookies, independientemente del dispositivo.
    • slidingExpiration="true" especifica que el plazo de caducidad está habilitado. La cookie de autenticación se actualiza y el tiempo hasta la caducidad se restablece para las peticiones siguientes realizadas en la misma sesión.
    • timeout="600" especifica el intervalo de tiempo, en minutos enteros, transcurrido el cual la cookie caduca. Si el valor del atributo SlidingExpiration es true, el atributo timeout es un valor variable, que caduca cuando transcurre el número de minutos especificado, contados a partir de la recepción de la última solicitud. El timeout está en minutos así que se guardará las credenciales unas 10 horas, que es el tiempo que necesitan

    Entiendo que he satisfecho la necesidad de recordar las credenciales que tenían los usuarios de la aplicación. Esperaré unos días a ver si me dicen algo y escribiré por aquí si conseguí arreglar.


    • Editado magomez89 lunes, 21 de diciembre de 2015 11:51 Poner bien el código del web.config
    lunes, 21 de diciembre de 2015 11:50
  • hola

    entiendo usas asp.net membership para la autenticacion

    de ser asi no validaste los atributos en el web.config

    Making user login persistant with ASP .Net Membership

    analiza en la respuesta los valores del timeout del <form>

    ----

    o sino vas a tener que evaluar crear el ticket de autenticacion

    Increase ASP.NET Authentication / Membership-Cookie Timeout

    veras como crea el FormsAuthenticationTicket

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 21 de diciembre de 2015 11:53