ASP.NET用户登录后跳转到 登录前 的页面 url 跳转

转载 2012年11月23日 14:29:53
在一般有用户登录的网站中,都会有需要用户登录后才能操作的页面,如果在用户登录后能跳转到之前的页面,就会给用户一个很好的体验,也能让他们更容易的浏览要操作的页面。这中间主要用到的是获取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的给个不同属性

我的shiro之旅: 十五 shiro 登录成功后,跳转到登录前的页面

很多时候,我们需要做到,当用户登录成功后,跳转回登录前的页面。如果用户是点击"登录"链接去到登录页面进行登录的,我们很容易跟踪用户的登录前的页面。比如,在"登录"链接后加一个url参数,如:http:...
  • LHacker
  • LHacker
  • 2014年03月04日 11:32
  • 21421

如何使用Shiro实现不同用户登录成功后跳转到不同主页?

0 如何使用Shiro实现不同用户登录成功后跳转到不同主页?10 Shiro配置文件中successUrl指定的页面只有一个:  Java代码   "shi...
  • jiftlixu
  • jiftlixu
  • 2015年09月05日 02:30
  • 4490

MVC+EF登陆 并跳转成功页面

最近在做.net 的一个项目,我们的开发是基于MVC+EF+B层和D层以及封装好的底层方法的这样子一个框架。这是一个档案管理系统,毋庸置疑,在做系统时,要先登录。那么,MVC如何实现登陆呢?     ...
  • lu930124
  • lu930124
  • 2015年08月29日 21:02
  • 7147

asp.net如何让未登录用户登录后能自动跳转到登录前访问的页面

http://q.cnblogs.com/q/35839/ 用这一种方法试试: Request.UrlReferrer.ToString(); 方法一:  在asp.net的aspx里面的源...
  • mituan1234567
  • mituan1234567
  • 2013年04月23日 15:17
  • 758

asp.net控件传参跳转到下一页面

  • 2012年12月26日 22:27
  • 3KB
  • 下载

ASP.NET 个人信息注册页面,并跳转显示

  • 2016年11月23日 20:46
  • 30.83MB
  • 下载

浅析asp.net页面跳转

  • 2011年11月29日 09:22
  • 17KB
  • 下载

在asp.net中实现页面跳转传参

  • 2011年11月15日 19:36
  • 26KB
  • 下载

使用filter使session失效的用户,重新跳转到登录页面

1.前台简单的登录测试页面login.jsp  Java代码  page language="java" import="java.util.*" pageEncoding="...
  • qt1972
  • qt1972
  • 2017年03月15日 00:59
  • 904

8.用户模块:跳转到登录页面

1、在menu.jsp页面,修改登录的链接。 登录| 登录| 注册| [退出]| ...
  • xiongwt
  • xiongwt
  • 2015年04月23日 23:36
  • 930
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET用户登录后跳转到 登录前 的页面 url 跳转
举报原因:
原因补充:

(最多只允许输入30个字)