用戶登錄后跳轉到 登錄前 的頁面 url 跳轉


在一般有用戶登錄的網站中,都會有需要用戶登錄后才能操作的頁面,如果在用戶登錄后能跳轉到之前的頁面,就會給用戶一個很好的體驗,也能讓他們更容易的瀏覽要操作的頁面。這中間主要用到的是獲取Url參數,獲取后用於跳轉。

主要實現步驟:

為了能很好的說明,主要已兩個頁面為例,order.aspx,login.aspx

1、order.aspx,實現訂單頁面,主要功能是實現用戶在選定商品時提交訂單,但用戶必須登陸后才能實現提交的功能,這樣才知道是哪個買的嘛。。

    以代碼表示,能更清楚,在加載到order.aspx頁面時,判斷用戶是否登錄,這判斷用session判斷

protected void Page_Load(object sender, EventArgs e)
{
string returnUrl = Request.Url.AbsoluteUri;//獲取當前url地址
if (Session["user"] == null)
{
Response.Redirect("/login.aspx?url=" + Server.UrlEncode(returnUrl));
}
else
{
//執行訂購操作,該用戶已經登錄
}

}

 

  上面主要是實現把當前頁的url地址傳遞給登錄頁面

2、login.aspx 實現用戶登錄,得到傳遞過來的Url參數

     代碼如下:

//登錄方法
private bool Login()
{
//用戶驗證
//...略...

//判斷跳轉
if (!string.IsNullOrEmpty(Request.QueryString["url"]))
{
//跳轉到登錄前頁面
string returnUrl = Request.QueryString["url"].ToString();
Response.Redirect(Server.UrlDecode(returnUrl));
}
else
{
//登錄頁面登錄的
}
}

 

    只需簡單的跳轉就可以實現,如果這樣類似的操作很多,最好給予封裝成方法統一調用

 

注: 如果在跳轉的頁面是在虛擬目錄下,而不是根站點目錄下,設置有些不同,就要進行判斷。。。

這樣的話 就要進行url虛擬目錄判斷

/// <summary>
/// 判斷url路徑 是否為根目錄
/// </summary>
/// <returns></returns>
public static string GetRootUrl()
{
string AppPath = "";
HttpContext HttpCurrent = HttpContext.Current;
HttpRequest Req;
if (HttpCurrent != null)
{
Req = HttpCurrent.Request;

string UrlAuthority = Req.Url.GetLeftPart(UriPartial.Authority);

if (Req.ApplicationPath == null || Req.ApplicationPath == "/")
//直接安裝在 Web 站點
AppPath = UrlAuthority;
else
//安裝在虛擬子目錄下
AppPath = UrlAuthority + Req.ApplicationPath;
}
return AppPath;
}

 

代碼注釋:Req.Url.GetLeftPart(UriPartial.Authority); 返回http://localhost 在根目錄情況下,如果是在虛擬目錄下(虛擬目錄設置為web)則返回的是http://localhost/web

這樣在order.apsx頁面中就在執行跳轉之前就要加上Req.Url.GetLeftPart(UriPartial.Authority)的返回值

如: string returnUrl =Req.Url.GetLeftPart(UriPartial.Authority)+ Request.Url.AbsoluteUri;//獲取當前url地址

這樣就能正確的執行跳轉了。。。

 

附:

這里附上Request獲取url信息的各種方法比較

 

以下轉自:http://www.cnblogs.com/dudu/archive/2004/02/20/1435.html

測試的url地址是http://www.test.com/testweb/default.aspx, 結果如下:

Request.ApplicationPath: /testweb
Request.CurrentExecutionFilePath: /testweb/default.aspx
Request.FilePath: /testweb/default.aspx
Request.Path: /testweb/default.aspx
Request.PathInfo: 
Request.PhysicalApplicationPath: E:/WWW/testweb/
Request.PhysicalPath: E:/WWW/testweb/default.aspx
Request.RawUrl: /testweb/default.aspx
Request.Url.AbsolutePath: /testweb/default.aspx
Request.Url.AbsoluteUri: http://www.test.com/testweb/default.aspx
Request.Url.Host: www.test.com
Request.Url.LocalPath: /testweb/default.aspx  

綜上就為實現登錄跳轉的基本實現,主要是運用了url參數對跳轉前的判斷,然后在登錄的時候進行獲取。。

主要需要了解的是Request.Url的給個不同屬性


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM