首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

ASP.NET 自動返回上一頁:Request.UrlReferrer 應用

     編輯:關於ASP.NET

常見場景:Session 過期導向登入頁,登入成功後自動跳回原操作頁。`Request.UrlReferrer` 即可輕鬆實現。

核心代碼

protected void Page_Load(object sender, EventArgs e)
{
    if (!IsPostBack)
    {
        // 1. 保存來源頁面
        if (Request.UrlReferrer != null)
            ViewState["ReturnUrl"] = Request.UrlReferrer.ToString();
    }
}

protected void btnLogin_Click(object sender, EventArgs e)
{
    // ... 驗證邏輯 ...
    if (success)
    {
        string returnUrl = ViewState["ReturnUrl"] as string;
        if (!string.IsNullOrEmpty(returnUrl))
            Response.Redirect(returnUrl);
        else
            Response.Redirect("Default.aspx");
    }
}

進階:統一攔截模組

public class AuthHttpModule : IHttpModule
{
    public void Init(HttpApplication context)
    {
        context.BeginRequest += (s, e) => 
        {
            var app = (HttpApplication)s;
            if (app.Request.UrlReferrer != null && 
                !app.Request.Url.AbsolutePath.Contains("Login") &&
                app.Session["User"] == null)
            {
                // 保存原始請求 URL 含 QueryString
                app.Session["ReturnUrl"] = app.Request.RawUrl;
                app.Response.Redirect("~/Login.aspx");
            }
        };
    }
}

在 `web.config` 註冊模組,全站自動攔截未登入請求並保存返回地址。

注意事項

  • `UrlReferrer` 可能為 null(直接輸入網址、書籤、HTTPS→HTTP 降級、隱私模式、某些防火牆/代理移除 Referer)。
  • 永遠提供預設落地頁(如首頁)作為備選。
  • 登入頁面本身不應觸發攔截,避免無限重導。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved