用户登录后跳转到 登录前 的页面 url 跳转 (转自CSDN pasic)
2012-08-08 10:12
501 查看
在一般有用户登录的网站中,都会有需要用户登录后才能操作的页面,如果在用户登录后能跳转到之前的页面,就会给用户一个很好的体验,也能让他们更容易的浏览要操作的页面。这中间主要用到的是获取Url参数,获取后用于跳转。 主要实现步骤: 为了能很好的说明,主要已两个页面为例,order.aspx,login.aspx 1、order.aspx,实现订单页面,主要功能是实现用户在选定商品时提交订单,但用户必须登陆后才能实现提交的功能,这样才知道是哪个买的嘛。。 以代码表示,能更清楚,在加载到order.aspx页面时,判断用户是否登录,这判断用session判断 view plaincopy to clipboardprint? 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 { //执行订购操作,该用户已经登录 } } 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参数 代码如下: view plaincopy to clipboardprint? //登录方法 private bool Login() { //用户验证 //...略... //判断跳转 if (!string.IsNullOrEmpty(Request.QueryString["url"])) { //跳转到登录前页面 string returnUrl = Request.QueryString["url"].ToString(); Response.Redirect(Server.UrlDecode(returnUrl)); } else { //登录页面登录的 } } //登录方法 private bool Login() { //用户验证 //...略... //判断跳转 if (!string.IsNullOrEmpty(Request.QueryString["url"])) { //跳转到登录前页面 string returnUrl = Request.QueryString["url"].ToString(); Response.Redirect(Server.UrlDecode(returnUrl)); } else { //登录页面登录的 } } 只需简单的跳转就可以实现,如果这样类似的操作很多,最好给予封装成方法统一调用 注: 如果在跳转的页面是在虚拟目录下,而不是根站点目录下,设置有些不同,就要进行判断。。。 这样的话 就要进行url虚拟目录判断 view plaincopy to clipboardprint? /// <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; } /// <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信息的各种方法比较 以下转自:/article/4586260.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的给个不同属性 |
相关文章推荐
- 用户登录后跳转到 登录前 的页面 url 跳转
- ASP.NET用户登录后跳转到 登录前 的页面 url 跳转
- spring mvc怎么加入权限控制,在未登录前,任何访问url都跳转到login页面;登录成功后跳转至先前的url
- web 开发,个人中心每个请求,判断用户是否登录,若没有登录,则跳转到登录页面,登录成功后返回之前页面
- html frameset框架解决用户对象失效时跳转登录页面
- axios 拦截 , 页面跳转, token 验证(经常用于判断用户是否登录)
- Codeigniter处理用户登录验证后URL跳转
- 判断用户是否已登录,未登录用户禁止访问任何页面或action,自动跳转到登录页面
- Codeigniter实现处理用户登录验证后的URL跳转
- struts2--拦截器(非登录用户不可跳转至该页面)
- 制作一个银行卡用户登录页面,提交后连接数据库进行登录验证,根据验证结果跳转到不同页面
- 用户手机客户端登录Login页面跳转到手机MobileLogin页面问题总结
- 判断用户是否登录,如果登录了放行,否则跳转到登陆页面
- WordPress用户登录后根据不同的角色跳转到不同的页面处理
- 小宗的启示:不同类型的liferay用户登录到不同页面(登录跳转个性化)——liferay5.0.1用户登录后的跳转(二)
- 通过配置http拦截器,来进行ajax请求验证用户登录的页面跳转
- 创建并部署一个Servlet,要求在实现用户登录功能,当用户名和密码正确时跳转到欢迎页面,否则提示出错信息
- magento-只有登录的用户才能看到网站的页面,未登录的页面都跳转到登录页面!
- Codeigniter实现处理用户登录验证后的URL跳转
- PHP用户登录后跳转回上一访问页面的实现思路及代码