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
:(
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
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:
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
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 ;-) ?
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