2012-03-18 39 views
5

En mi aplicación Web ASP.NET, la estructura del proyecto se muestra en la siguiente imagen:redirección después de iniciar sesión: Web.config

enter image description here

El Web.config del sitio tiene forma de autenticación:

<authentication mode="Forms"> 
    <forms loginUrl="~/Login.aspx" timeout="2880" />  
</authentication> 

Y el Web.config de la carpeta Pages:

<?xml version="1.0"?> 
<configuration> 
<system.web> 
    <authorization> 
    <allow roles="Admin"/> 
    <deny users="*"/> 
    </authorization> 
</system.web> 

Tengo un administrador de usuario con la función de administrador. Después de iniciar sesión correctamente Estoy tratando de redirigir al usuario en Home.aspx reside en la carpeta Páginas como:

protected void EMSLogin_Authenticate(object sender, AuthenticateEventArgs e) { 
    TextBox UserNameTextBox = EMSLogin.FindControl("UserName") as TextBox; 
    TextBox PasswordTextBox = EMSLogin.FindControl("Password") as TextBox; 

    if (Membership.ValidateUser(UserNameTextBox.Text, PasswordTextBox.Text)) { 
    Response.Redirect("~/Pages/Home.aspx"); 
    } 
} 

Pero no está funcionando. Nuevamente está redireccionando a la página de inicio de sesión, es decir, Login.aspx con la URL: localhost:3695/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx.

¿Cómo puedo lograrlo? Cualquier información será muy útil.

Atentamente.

Respuesta

8

Membership.ValidateUser solo valida el nombre de usuario y la contraseña contra el proveedor de membresía. No emite la cookie de autenticación.

Si quieres hacer esto es necesario utilizar el método SetAuthCookie antes de redirigir:

if (Membership.ValidateUser(UserNameTextBox.Text, PasswordTextBox.Text)) 
{ 
    FormsAuthentication.SetAuthCookie(UserNameTextBox.Text, false); 
    Response.Redirect("~/Pages/Home.aspx"); 
} 

o si en su web.config se establece:

<authentication mode="Forms"> 
    <forms loginUrl="~/Login.aspx" defaultUrl="~/Pages/Home.aspx" timeout="2880" /> 
</authentication> 

También es posible usar el RedirectFromLoginPage método que emitirá la cookie de autenticación y lo redirigirá a la página predeterminada:

if (Membership.ValidateUser(UserNameTextBox.Text, PasswordTextBox.Text)) 
{ 
    FormsAuthentication.RedirectFromLoginPage(UserNameTextBox.Text, false); 
} 
+0

Muchas gracias ... –

Cuestiones relacionadas