none
Autenticación desde una aplicación Web RRS feed

  • Pregunta

  • tengo el siguiente código, cuando ingreso a alguno de mis formularios perfil.aspx por ejemplo, me redirecciona al login, pero una vez que ingreso el usuario me manda a "perfil", pero al dar clic en otro apartado por ejemplo "datos" me vuelve a mandar al login.

    Lo que necesito es que una vez que ingrese con el usuario, al dar clic en otro apartado ya no me mande al login, ya que ya lo había ingresado una vez 

    este es el código que tengo en el web.config

    <authentication mode="Forms">
          <forms defaultUrl="~/Perfil.aspx" loginUrl="~/Login.aspx" />
        </authentication>
        <authorization>
          <deny users="?" />
        </authorization>

    sábado, 28 de marzo de 2020 19:20

Respuestas

  • Hola. Puedes mostrar el código de tu login.aspx? Sobre todo el código c#. Necesitas crear una cookie de autenticacion que se guarda en el navegador. Luego con dicha cookie se envía en cada llamada a tu aplicación y es validada. Si no existe esa cookie o ticket siempre el sistema detecta que no estás autenticado y te vuelve a redirigir a login

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta Alma Velazquez miércoles, 1 de abril de 2020 17:42
    sábado, 28 de marzo de 2020 21:21
    Moderador

Todas las respuestas

  • Hola. Puedes mostrar el código de tu login.aspx? Sobre todo el código c#. Necesitas crear una cookie de autenticacion que se guarda en el navegador. Luego con dicha cookie se envía en cada llamada a tu aplicación y es validada. Si no existe esa cookie o ticket siempre el sistema detecta que no estás autenticado y te vuelve a redirigir a login

    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    • Marcado como respuesta Alma Velazquez miércoles, 1 de abril de 2020 17:42
    sábado, 28 de marzo de 2020 21:21
    Moderador
  •  este es el codigo que tengo 


    protected void Button1_Click(object sender, EventArgs e)
            {
                string conexion = System.Configuration.ConfigurationManager.ConnectionStrings["ProyectoConnectionString"].ConnectionString;
                SqlConnection cn = new SqlConnection(conexion);
                cn.Open();
                SqlCommand command = new SqlCommand("LOGEO", cn);
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add("@Usuario", SqlDbType.VarChar).Value = Tbusuario.Text;
                command.Parameters.Add("@Contrasena", SqlDbType.VarChar).Value = Tbpassword.Text;
                int respuesta;
                respuesta = Convert.ToInt32(command.ExecuteScalar());
                if (respuesta == 1)
                {
                    Server.Transfer("Perfil.aspx");
                }
                else
                {

                    Response.Write("<script>window.alert('Usuario y/o contraseña incorrecta');</script>");
                }
                cn.Close();
            }

    domingo, 29 de marzo de 2020 23:44
  • Lo dicho, lo tienes mal implementado. Te falta generar la cookie. Echa un ojo a Procedimiento para implementar la autenticación basada en formularios en la aplicación ASP.NET mediante C#.NET

    Sobre todo el punto 4 que pone

    Puede usar uno de estos dos métodos para generar la cookie de autenticación de formularios y redirigir el usuario a una página adecuada en el evento cmdLogin_ServerClick . Se proporciona código de ejemplo para ambos escenarios. Use cualquiera de ellos según su requisito.

    private void cmdLogin_ServerClick(object sender, System.EventArgs e)
    {
       if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
       {
          FormsAuthenticationTicket tkt;
          string cookiestr;
          HttpCookie ck;
          tkt = new FormsAuthenticationTicket(1, txtUserName.Value, DateTime.Now, 
    DateTime.Now.AddMinutes(30), chkPersistCookie.Checked, "your custom data");
          cookiestr = FormsAuthentication.Encrypt(tkt);
          ck = new HttpCookie(FormsAuthentication.FormsCookieName, cookiestr);
          if (chkPersistCookie.Checked)
          ck.Expires=tkt.Expiration;
        ck.Path = FormsAuthentication.FormsCookiePath; 
          Response.Cookies.Add(ck);
    
          string strRedirect;
          strRedirect = Request["ReturnUrl"];
          if (strRedirect==null)
                strRedirect = "default.aspx";
             Response.Redirect(strRedirect, true);
       }
       else
          Response.Redirect("logon.aspx", true);
    }

    O este codigo

    private void cmdLogin_ServerClick(object sender, System.EventArgs e)
    {
    if (ValidateUser(txtUserName.Value,txtUserPass.Value) )
    FormsAuthentication.RedirectFromLoginPage(txtUserName.Value,
    chkPersistCookie.Checked);
    else
    Response.Redirect("logon.aspx", true);
    }

    Cómo ves se genera la cookie de autenticacion


    Si se solucionó tu consulta no olvides marcar la respuesta. Si te ayudó, vótala como útil. Saludos

    lunes, 30 de marzo de 2020 0:54
    Moderador
  • hola

    Si tienes tu propia autenticacion podrias aplicar

    Login – Usando Password con Hash

    la idea es llegar ala linea

    FormsAuthentication.RedirectFromLoginPage(txtUser.Text, chkPersistLogin.Checked);

    para que crees la cookie de autenticacion, esta hara tambien la rediccion a la pagina principal que configures

    saludos


    Leandro Tuttini

    Blog
    MVP Profile
    Buenos Aires
    Argentina

    lunes, 30 de marzo de 2020 14:05