problemas con el redireccionamiento a otra pagina

Iniciado por jorgexl30, 28 Octubre 2009, 14:57 PM

0 Miembros y 2 Visitantes están viendo este tema.

jorgexl30

hola a todos los del foro

aca de nuevo  con otro problema

   tengo una pagina default.aspx  para  logearme  y cuando estoy registrado  la redirecciono a otra pagina que se llama menu con un  Response.Redirect("menu.aspx")

pero en la url me sale
http://localhost:1380/default.aspx?ReturnUrl=%2fmenu.aspx
se supone que  tiene que salir

http://localhost:1380/menu.aspx 

ojala me puedan ayudar gracias de antemano
:(

MANULOMM

la redireccion la estas haciendo manual?
a lo que me refiero es como estas autenticando tu usuario?, cuando la direccion te sale asi:
http://localhost:1380/default.aspx?ReturnUrl=%2fmenu.aspx
es por que ASP.NET todavia piensa que eres un usuario anonimo, cuando el te reconozca como un usuario con permisos a esa sección te redireccionara automaticamente.

Explicanos un poco mas sobre como estas autenticando el usuario.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


jorgexl30

#2
hola juan les envio  los archivos con el codigo  

* cuando hago el logeo con mi  usuario y clave me devuelve un true y cuando no un false y depende de eso lo redirecciono

<?xml version="1.0" encoding="utf-8"?>

<configuration>
 
   <appSettings/>
 <connectionStrings>
   <remove name="LocalSqlServer" />
   <add name="LocalSqlServer"   connectionString="Data Source=xxxxx;Initial Catalog=ordenes;Integrated Security=false;User ID=xxxx;Password=xxxx ;"
       providerName="System.Data.SqlClient="/>
 </connectionStrings>
 
   <system.web>
       <compilation debug="true" strict="false" explicit="true" />
       <pages>
           <namespaces>
               <clear />
               <add namespace="System" />
               <add namespace="System.Collections" />
               <add namespace="System.Collections.Specialized" />
               <add namespace="System.Configuration" />
               <add namespace="System.Text" />
               <add namespace="System.Text.RegularExpressions" />
               <add namespace="System.Web" />
               <add namespace="System.Web.Caching" />
               <add namespace="System.Web.SessionState" />
               <add namespace="System.Web.Security" />
               <add namespace="System.Web.Profile" />
               <add namespace="System.Web.UI" />
               <add namespace="System.Web.UI.WebControls" />
               <add namespace="System.Web.UI.WebControls.WebParts" />
               <add namespace="System.Web.UI.HtmlControls" />
           </namespaces>
       </pages>

     <identity impersonate="true"/>
     <authentication mode="Forms">
       <forms loginUrl="default.aspx" protection="All" timeout="60" path="/"/>
     </authentication>
     <authorization>
       <deny users="?" />
       <!-- solo los usuarios autentificados -->
     </authorization>
     
         <customErrors mode="Off"/>
       </system.web>
   
</configuration>
y el default.aspx.vb

Partial Public Class _Default
   Inherits System.Web.UI.Page

   Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

   End Sub

   Protected Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

       Dim objAlumno As New Logeo()

       objAlumno.usuario = Me.txtusuario.Text
       objAlumno.clave = Me.txtclave.Text

       If objAlumno.Existe() Then
           Response.Redirect("menu.aspx")

       Else
           lblmensaje.Text = "El Usuario O Clave no Existe"
       End If

   End Sub
End Class


y la clase


Imports System.Web
Imports System.Web.Configuration
Imports System.Data
Imports System.Data.SqlClient
Public Class Logeo
   Private txtusuario As String
   Private txtclave As String

   Public Property usuario() As String
       Get
           Return Me.txtusuario

       End Get
       Set(ByVal value As String)
           Me.txtusuario = value
       End Set
   End Property
   Public Property clave() As String
       Get
           Return Me.txtclave


       End Get
       Set(ByVal value As String)
           Me.txtclave = value
       End Set
   End Property

   'Public Sub New(ByVal usuario As String, ByVal clave As String)
   '    Me.txtusuario = usuario
   '    Me.txtclave = clave

   ' End Sub

   Public Function Existe() As Boolean

       Dim blnExiste As Boolean
       Dim objConexion As New SqlConnection(WebConfigurationManager.ConnectionStrings("LocalSqlServer").ConnectionString)
       Dim objComando As SqlCommand = New SqlCommand("login", objConexion)
       objConexion.Open()
       objComando.Connection = objConexion
       objComando.CommandType = CommandType.StoredProcedure
       'ExecuteScalar de vuelve una fila y una columna
       objComando.Parameters.AddWithValue("@usuario", Me.txtusuario)
       objComando.Parameters.AddWithValue("@clave", Me.txtclave)
       blnExiste = objComando.ExecuteScalar() > 0
       objConexion.Close()
       Return blnExiste


   End Function

End Class


:silbar:

MANULOMM

especificas en el config esta linea.

<authentication mode="Forms">
        <forms loginUrl="default.aspx" protection="All" timeout="60" path="/"/>
      </authentication>
      <authorization>
        <deny users="?" />
        <!-- solo los usuarios autentificados -->
      </authorization>

pero en ninguna parte de este codigo:

     If objAlumno.Existe() Then
            Response.Redirect("menu.aspx")

        Else
            lblmensaje.Text = "El Usuario O Clave no Existe"
        End If


estas diciendo que el usuario deja de ser "Anonimo".

para hacerlo tienes que poner lo siguiente en la parte true de la validacion si existe.

//Esta en c#.
//Es necesario tener este Using = Imports en vb.net
using System.Web.Security;

if(objAlumno.Existe())
{
    FormsAuthentication.RedirectFromLoginPage(objAlumno.usuario,false);
    Response.Redirect("menu.aspx");
}
// El resto de tu codigo....

La Funcion RedurectFromLoginPage toma dos parametros el nombre del usuario, cuando pongas un control login name en tu pagina este sera el nombre que saldra, puedes poner el nombre o el correo.
y el segundo parametro es para saber si se guarda un Cookie con los datos, asi si se cierra el navegador y se abre de nuevo el entrara automaticamente (mientras la cookie exista obviamente). esta funcionalidad puedes controlarla con Checkbox diciendo que si desea que sus datos sean recordados. yo por lo general la pongo false. pero ya tu veras.
Espero que te sirva.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia


jorgexl30

hola juan eso era lo que me faltaba super quedo impeque gracias ... muy bueno el foro una consulta al usar el control login seria la misma logica y programacion.. ;D ;-) ?

MANULOMM

no, cuando unsas un control de login, tu no te encargas de los usuario, tienes que ejecutar una herramienta llamada aspnet_reqsql.exe la cual la encuentras en "C:\Windows\Microsoft.Net\" esta te pide los datos de conexion a tu bd y crea unas tablas, vistas y sp's donde alamacena Usuarios,Roles,Perfiles etc.
Puedes ejecutar la herramienta "ASP.NET Configuration" la cual encuentras en el Solution Explorer del visual studio cuando selecciones el proyecto web.
Con este metodo podras usar todos los controles de autenticación de asp.net de forma transparente.

Atentamente,

Juan Manuel Lombana
Medellín - Colombia