2012-03-18 73 views
5

在我的ASP.NET Web應用程序,該項目結構由下圖所示:重定向後登錄: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> 

我有一個用戶管理員角色管理員。成功登錄後,我試圖重定向Home.aspx中的用戶駐留在Pages文件夾中,如下所示:

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

非常感謝... – 2012-03-18 14:53:47