首頁>Program>source

在aspx C#.NET頁面(我正在執行Framework v3.5)中,我需要知道使用者来自何處,因為他们無法登錄而無法查看頁面。如果我有 A頁面 (使用者要查看的頁面)重定向到頁面 B (登錄頁面),Request.UrlReferrer物件為null.

背景:如果使用者未登錄,我將重定向到"登錄"頁面( B 在這種情况下).登錄後,我想將他们返迴到他们被迫登錄之前所請求的頁面。

UPDATE:
一个不錯的快速解決方案似乎是:
//if user not logged in Response.Redirect("..MyLoginPage.aspx?returnUrl=" + Request.ServerVariables["SCRIPT_NAME"]);
然後,只需在登錄頁面上查看QueryString即可,迫使他们进入,並在成功登錄後將使用者放置在他们所在的位置。

最新回復
  • 5月前
    1 #

    如果使用標準成員資格提供程式,並為 目錄/頁面,代碼將自動設置ReturnUrl的查詢引數,並在成功登錄後重定向。

    如果您不想使用Membership provider模式,建議您也手動執行查詢字元串引數. HTTP引荐来源網址不是很可靠。

  • 5月前
    2 #

    UrlReferrer基於瀏覽器應该發送的HTTP_REFERER標頭.但是,就像所有留给客戶的事情一樣,它是可變的。

    我知道某些"安全"套件(如Norton的Internet Security)会删除该標頭,因為它有助於跟蹤使用者行為.另外,我確定有一些Firefox擴充套件程式可以執行相同的操作。

    最重要的是,您不應该信任它.只需將URL附加到GET字元串,然後基於该字元串进行重定向。

    更新:如評論中所述,將从GET引數的重定向限製為仅適用於無域相對鏈接,拒绝目錄模式(../)等可能是一个好主意。因此,仍然进行完整性檢查 重定向; 如果您遵循"不要盲目使用任何使用者提供的輸入"標準,那麼您應该是安全的。

  • 5月前
    3 #

    問题可能与如何將使用者重定向到其他頁面有關.無論如何,引荐来源網址不是您應遵循的绝對規則-客戶端可以轻松地對其进行偽造。

  • 5月前
    4 #

    您要查詢的內容最好是使用查詢字元串變數(例如returnURL或originURL)来完成. Referrer非常不可靠,因此最適合用於資料挖掘操​​作。

    例如,請參见ASP.Net通過登錄进行重定向的方式。

  • Python比较運算符从左到右鏈接/分組?
  • java:GwT:計時器和計划程式類