2009-08-12 39 views
0

我有一個應用程序,成功登錄後,用戶將被重定向到Home.aspx。 現在,如果我嘗試Response.Redirect(「Home.aspx」)它不工作,但如果我嘗試 FormsAuthentication.RedirectFromLoginPage(TextBox1.Text,false); ..它的工作。 現在我的問題是爲什麼Response.Redirect()不工作? 我知道FormsAuthentication.RedirectFromLoginPage做比登錄更多,它也設置cookie,並且重定向到登錄頁面,但爲什麼Redirct()不工作? web.config:爲什麼Response.Redirect(「Pagename.aspx」)不起作用

<authentication mode="Forms"> 
    <forms loginUrl="LogIn.aspx" defaultUrl="Home.aspx" path="/"></forms> 
</authentication> 
<authorization> 
    <deny users="?"/> 
</authorization> 

有人可以幫忙嗎?

回答

4

你已經有了很多答案。

Response.Redirect不會設置身份驗證Cookie,因此當Home.aspx加載失敗時,會將您重定向回登錄頁面。

要使用Response.Redirect,你將不得不自行管理的cookie,從http://www.4guysfromrolla.com/webtech/110701-1.3.shtml一個例子是:

Dim cookie As HttpCookie = FormsAuthentication.GetAuthCookie(UserName.Text, _ 
         chkPersistCookie.Checked) 
Response.Cookies.Add (cookie) 
Response.Redirect(FormsAuthentication.GetRedirectUrl (UserName.Text, _ 
         chkPersistCookie.Checked)) 

編輯:

要回答這個問題在你的評論,如果您將true作爲第二個參數傳遞給RedirectFromLoginPage,然後將cookie設置爲永不過期,並且不需要再次登錄。

FormsAuthentication.RedirectFromLoginPage(TextBox1.Text, true) 
+0

感謝帕特里克烏拉圭回合的幫助和:-)鏈接。 我有一個問題,讓我們說成功登錄後,我已關閉窗口。所以下次我開始瀏覽時,我應該直接將redirectrd改爲Home.aspx而不是Login.aspx(與stackoverflow相同)。現在如何實現這一點。你能舉一些例子或鏈接嗎? – Wondering 2009-08-12 10:26:45

+0

它的工作就像一個魔術。謝謝。 – Wondering 2009-08-13 05:28:51

+0

這裏不會有FormsAuthentication.SetAuthCookie的幫助嗎? – 2009-10-11 02:50:13