2012-03-18 16 views
5

Nel mio ASP.NET Web Application, la struttura del progetto è illustrato dalla seguente immagine:Redirect Dopo Login: Web.config

enter image description here

web.config del sito ha l'autenticazione forma:

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

E il web.config della cartella Pagine ha:

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

Ho un amministratore utente con ruolo Admin. Dopo il successo Entra Sto cercando di reindirizzare l'utente in Home.aspx risiede nella cartella Pagine come:

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"); 
    } 
} 

Ma non sta funzionando. Sta di nuovo reindirizzando alla pagina di accesso, ad es. Login.aspx con l'URL: localhost:3695/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx.

Come posso ottenere questo risultato? Qualsiasi informazione sarà molto utile.

Saluti.

risposta

8

Membership.ValidateUser convalida solo il nome utente e la password contro il provider di appartenenza. Non emette il cookie di autenticazione.

Se si vuole fare questo è necessario utilizzare il metodo SetAuthCookie prima di reindirizzare:

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

o se nel vostro web.config si imposta:

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

si potrebbe anche utilizzare il RedirectFromLoginPage metodo che emetterà il cookie di autenticazione e reindirizzerà alla pagina predefinita:

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

Grazie mille ... –