2012-03-18 2 views
5

В моем ASP.NET Web Application, структура проекта показана на следующем рисунке:Перенаправление После Логин: Web.config

enter image description here

web.config, Сайта имеет форму аутентификации:

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

И Web.config папки страницы имеет:

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

У меня есть администратор с ролью Admin. После успешного входа в систему Я пытаюсь перенаправить пользователя в Home.aspx находится в папке страницы, как:

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

Но это не работает. Он снова перенаправляется на страницу входа, например, Login.aspx с URL-адресом: localhost:3695/Login.aspx?ReturnUrl=%2fPages%2fHome.aspx.

Как я могу это достичь? Любая информация будет очень полезна.

С уважением.

ответ

8

Membership.ValidateUser только подтверждает имя пользователя и пароль от поставщика членства. Он не генерирует cookie аутентификации.

Если вы хотите сделать это, вы должны использовать метод SetAuthCookie перед перенаправлением:

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

или если в вашем web.config вы установили:

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

вы также можете использовать RedirectFromLoginPage метод, который выдает файл cookie аутентификации и перенаправляет вас на страницу по умолчанию:

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

Большое спасибо ... –

Смежные вопросы