2009-07-10 24 views
0

我有兩個頁面,NonMember.aspx和Member.aspx。如果用戶訪問該網站,他們將在登錄後立即訪問NonMember.aspx,我希望他們立即重定向到Member.aspx,但不是這樣做,而是停留在NonMember.aspx上。用戶實際上必須再次點擊菜單項才能進入Member.aspx。如何在用戶登錄時從非成員頁面直接訪問成員頁面?

的鏈接位於http://abc.com/tools/NonMember.aspxhttp://abc.com/tools/Member.aspx

我做:

System.IO.Path.GetFileNameWithoutExtension(Request.Url.ToString()); 

,但我想有一個更好的辦法,尤其是因爲我有多個頁面Default.aspx的,這可能會造成問題

下面是詳細什麼正是我做:

當我在我的本地開發機器上運行的網站,非會員頁面指向:

http://testserver/tools/NonMember.aspx

Requet.Url.AbsolutePath指向/testserver/tools/NonMember.aspx。

那麼我這樣做:

if(url == "~/tools/NonMember.aspx") 
{ 
    Response.Redirect("~/tools/Member.aspx"); 
} 

以上不工作,我可以檢查是否網址等於/testserver/tools/NonMember.aspx,因爲如果我部署到liveserver,它就會失敗。

+1

ASP.Net窗體身份驗證有這個能力內置的,但我猜你不使用那。 – Greg 2009-07-10 16:20:19

回答

1

對ASP.NET應用程序使用Forms Authentication時,它會自動將您重定向到您在登錄前查看的頁面。這就是您重定向回NonMember.aspx頁面的原因。

如果您只有一個成員頁面,並且在頁面中執行檢查以查看用戶是否已通過身份驗證(如果是),則顯示成員內容,否則顯示非成員內容會更好。

然後,當用戶登錄並被重定向回頁面時,他們將看到成員內容。


如果你是在保持兩個單獨的頁面堅持,然後在你的支票,你只需要查看當前用戶進行身份驗證(通過是通過頁面暴露在用戶IsAuthenticated屬性),然後重定向到您的會員頁面。如果您在NonMember頁面上,則不需要檢查以查看網址是什麼(除非這是MVC,您沒有指出)。

0

如果你有HttpResponse對象,你可以使用HttpResponse.Redirect

+0

我有上述更新示例的重定向工作,但必須有更好的方法,因爲我可以有多個稱爲默認的頁面。 – Xaisoft 2009-07-10 16:17:28

0

您應該檢查cookie或會話變量,看用戶是否登錄,然後使用Response.Redirect的將其移動到成員頁。

+0

我認證部分已關閉,獲取用戶所在當前頁面的url的最佳方式是什麼。 – Xaisoft 2009-07-10 16:16:50

+0

也許你應該嘗試System.Web.HttpContext.Current.Request.Url.AbsolutePath – Totty 2009-07-10 16:18:41

+0

我用你的建議更新了我的問題。 – Xaisoft 2009-07-10 16:29:21

0

我不確定我是否得到您的方案,但是,讓我們試試。

如果你有公開頁面,登錄頁面和私人頁面(成​​員頁面),並且一旦你認證了你的用戶,你希望他們只瀏覽你的網站的私人部分,你應該在處理步驟的早期檢查(AuthorizeRequest會是一個很好的階段),如果來的請求是爲公共或登錄頁面,你也考慮公開並重定向到你的私人頁面從那裏(比如...有一個「主頁」的網站會員區並且一旦你獲得了對你網站的某個公共URL的認證和正確授權的請求,它就會一直重定向到它)。

編輯:您應該檢查Request.FilePath

0

最後我只是做了以下內容:

if(Authenticated) 
{ 
    string path = Request.UrlReferrer.AbsolutePath; 

    if (path.EndsWith("/tools/NonMember.aspx")) 
    { 
     Response.Redirect("~/tools/Member.aspx"); 
    } 
} 
相關問題