用户登录后跳转到 登录前 的页面 url 跳转 (转自CSDN pasic)

 

在一般有用户登录的网站中,都会有需要用户登录后才能操作的页面,如果在用户登录后能跳转到之前的页面,就会给用户一个很好的体验,也能让他们更容易的浏览要操作的页面。这中间主要用到的是获取Url参数,获取后用于跳转。

主要实现步骤:

为了能很好的说明,主要已两个页面为例,order.aspx,login.aspx

1、order.aspx,实现订单页面,主要功能是实现用户在选定商品时提交订单,但用户必须登陆后才能实现提交的功能,这样才知道是哪个买的嘛。。

    以代码表示,能更清楚,在加载到order.aspx页面时,判断用户是否登录,这判断用session判断

 

  1. protected void Page_Load(object sender, EventArgs e)  
  2.    {  
  3.       string returnUrl = Request.Url.AbsoluteUri;//获取当前url地址  
  4.       if (Session["user"] == null)  
  5.        {  
  6.            Response.Redirect("/login.aspx?url=" + Server.UrlEncode(returnUrl));  
  7.        }  
  8.       else  
  9.        {  
  10.          //执行订购操作,该用户已经登录  
  11.        }  
  12.         
  13.    } 
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参数

     代码如下:

   

  1. //登录方法  
  2. private bool Login()  
  3. {  
  4.    //用户验证  
  5.    //...略...  
  6.      
  7.  
  8.    //判断跳转  
  9.        if (!string.IsNullOrEmpty(Request.QueryString["url"]))  
  10.           {  
  11.                 //跳转到登录前页面  
  12.                string returnUrl = Request.QueryString["url"].ToString();  
  13.               Response.Redirect(Server.UrlDecode(returnUrl));  
  14.           }  
  15.      else 
  16.          {  
  17.            //登录页面登录的  
  18.          }  
//登录方法 private bool Login() { //用户验证 //...略... //判断跳转 if (!string.IsNullOrEmpty(Request.QueryString["url"])) { //跳转到登录前页面 string returnUrl = Request.QueryString["url"].ToString(); Response.Redirect(Server.UrlDecode(returnUrl)); } else { //登录页面登录的 } }

    只需简单的跳转就可以实现,如果这样类似的操作很多,最好给予封装成方法统一调用

注: 如果在跳转的页面是在虚拟目录下,而不是根站点目录下,设置有些不同,就要进行判断。。。

这样的话 就要进行url虚拟目录判断

  1. /// <summary>  
  2.    /// 判断url路径 是否为根目录  
  3.    /// </summary>  
  4.    /// <returns></returns>  
  5.    public static string GetRootUrl()  
  6.     {  
  7.        string AppPath = "";  
  8.         HttpContext HttpCurrent = HttpContext.Current;  
  9.         HttpRequest Req;  
  10.        if (HttpCurrent != null)  
  11.         {  
  12.             Req = HttpCurrent.Request;  
  13.  
  14.            string UrlAuthority = Req.Url.GetLeftPart(UriPartial.Authority);  
  15.              
  16.            if (Req.ApplicationPath == null || Req.ApplicationPath == "/")  
  17.                //直接安装在    Web    站点     
  18.                 AppPath = UrlAuthority;  
  19.            else 
  20.                //安装在虚拟子目录下     
  21.                 AppPath = UrlAuthority + Req.ApplicationPath;  
  22.         }  
  23.        return AppPath;  
  24.     } 
/// <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的给个不同属性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值