2011-05-15 32 views
0

嗨,我的登錄頁面有問題。
該場景是,
例如,我訪問www.mydomain.com/admin/,將其重定向到帶有ReturnURL參數的登錄頁面,如下所示。 www.mydomain.com/login.aspx?ReturnURL=%2fAdmin%2f。
我使用管理員帳戶登錄,一切正常。
但是,如果我直接進入Login.aspx,這意味着沒有ReturnURL QueryString字段。
我使用相同的管理員帳戶登錄,但是當我嘗試登錄www.mydomain.com/admin/並登錄後,將其重定向回登錄頁面。
ASP.Net身份驗證,如果ReturnURL null UserData變空

我正在做這樣的導航。我錯過了什麼?

//The code block that is logging in admin. 
//check if there is a ReturnURL 
if (QueryStringTool.IsExistAndNotNull("ReturnURL")) 
{ 
    Session["UserType"] = UserTypes.UserType.Admin; 
    Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false)); 
} 
//ReturnURL doesn't exists. 
else 
{ 
    FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked); 
    Response.Redirect("/Admin/Default.aspx"); 
} 

回答

1

現在試試這個。更換你的代碼

//check if there is a ReturnURL 

    if (QueryStringTool.IsExistAndNotNull("ReturnURL")) 
    { 
     Session["UserType"] = UserTypes.UserType.Admin; 
     Response.Redirect(FormsAuthentication.GetRedirectUrl(txtUserName.Text.Trim(), false)); 
    } 
    //ReturnURL doesn't exists. 
    else 
    { 
     FormsAuthentication.SetAuthCookie(txtUserName.Text, cbUserRememberMe.Checked); 
     Response.Redirect("/Admin/Default.aspx"); 
    } 

與這一個

if("Check if User Is Authentic") 
{ 
Session["UserType"] = UserTypes.UserType.Admin; 
FormsAuthentication.RedirectFromLoginPage(txtUserName.Text, cbUserRememberMe.Checked); 
} 

這會爲你的整個代碼工作。將已通過身份驗證的用戶重定向回原始請求的URL或默認URL。
檢查DefaultLoad事件Session["UserType"]如果用戶是Admin然後重定向他的管理頁面

+0

非常感謝它的工作。 – 2011-05-15 11:25:45

+0

@ÜmitAkkaya:你很歡迎。 – jams 2011-05-15 11:28:03

1

這是一個樣的web.config

<configuration> 
    <system.web> 
    <authentication mode="Forms"> 
     <forms 
     name="401kApp" 
     loginUrl="/login.aspx" 
     cookieless="AutoDetect" 
     defaultUrl="myCustomLogin.aspx"> 
     <credentials passwordFormat = "SHA1"> 
     <user name="UserName" 
     password="07B7F3EE06F278DB966BE960E7CBBD103DF30CA6"/> 
     </credentials> 
     </forms> 
    </authentication> 
    </system.web> 
</configuration><br/> 

web.config
OR
設置defaultUrl="yourdefaultpageURL"可以使用FormsAuthentication.RedirectFromLoginPage Method (String, Boolean)

+0

資料性的答案,但遺憾的是它不是爲我工作。 – 2011-05-15 09:40:22

+0

@ÜmitAkkaya:因爲您的代碼表示如果沒有'ReturnURL'轉到''/''這意味着'登錄'頁面。 – jams 2011-05-15 09:47:06

+0

@ÜmitAkkaya:我已經更新了我的答案,請檢查它。 – jams 2011-05-15 09:52:56