2012-03-18 20 views
5

W moim ASP.NET Web Application, struktura projektu pokazano na poniższym rysunku:Przekierowanie po zalogowaniu: Web.config

enter image description here

web.config z Serwisu ma postać uwierzytelniania:

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

A Web.config folderu Pages posiada:

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

Mam administratora użytkownika z rolą Administrator. Po pomyślnym zalogowaniu Próbuję przekierować użytkownika w Home.aspx znajduje się w folderze Strony jako:

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

Ale to nie działa. To ponownie przekierowuje do strony logowania, np. Login.aspx z adresem URL: localhost:3695/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx.

Jak mogę to osiągnąć? Wszelkie informacje będą bardzo pomocne.

Pozdrawiam.

Odpowiedz

8

Membership.ValidateUser tylko sprawdza nazwę użytkownika i hasło w odniesieniu do dostawcy członkostwa. Nie wysyła pliku cookie uwierzytelniającego.

Jeśli chcesz tego trzeba użyć metody SetAuthCookie przed przekierowaniem zrobić:

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

lub jeśli w Twojej web.config ustawić:

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

można również użyć RedirectFromLoginPage metoda, która wyemituje plik cookie uwierzytelniający i przekieruje użytkownika do domyślnej strony:

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

Dziękuję bardzo ... –

Powiązane problemy