解决登录以后跳转到初始访问的页面

昨天在逛社区的时候,看到一位园友发帖问到这个相关的问题。当时回答的不充分,也不细致,所以就抽时间写点东西进来,希望能起到一定的指导作用。

解决这个问题,首先,我们应该要选用Forms的认证,这个Forms认证不是这个话题的重点,在这里不进行详细介绍了,他们可以参考下面的相关文章:

ASP.NET安全问题--Forms验证的具体介绍(上篇)

ASP.NET安全问题--Froms验证的具体介绍(中篇)

ASP.NET安全问题--Forms验证(后篇)--实战篇

由于昨晚时间的关系,没有贴出代码,实在抱歉啊,现在贴出部分的代码以示讲解,这里我准备了三个文件Login.aspx,Default.aspx,Web.config。下面先来看看如何在Web.config里面配置Form认证

<!-- 下面就是启用Forms认证的简单配置 -->
<!--
name -- cookie的名字
defaultUrl -- 用户在登录成功以后跳转的页面。
loginUrl --   指定登录的页面
timeout  --   cookie验证的过期时间,以分钟为单位
-->

< authentication  mode ="Forms" >
   
< forms  name =".JqueryCookie"  defaultUrl ="http://jquery.kevin.cc"  protection ="All"  timeout ="43200"  
 

loginUrl="login.aspx" domain="kevin.cc"/></authentication>

这样我们就配置好了认证信息了,接下来我们看看Default.aspx页面具体是如何验证用户是否登录了,以及将跳转的Url传给Login.aspx

protected   void  Page_Load( object  sender, EventArgs e)
{
    
string  ReturnUrl  =  Request.Url.AbsoluteUri;

    
if  (HttpContext.Current.User.Identity.IsAuthenticated)
    {
       
// 这是验证成功以后要做的过程。
    }
    
else
    {
        Response.Redirect(
" http://jquery.kevin.cc/login.aspx?ReturnUrl= "   +  Server.UrlEncode(ReturnUrl));
    }
}

 

这个页面具体的做法,就是用先判断用户是否登录了,登录以后做验证成功以后的事情,如果没有登录,就跳转到登录页面,顺便将ReturnUrl加密一下传给Login.aspx,这样就可以在登录成功以后跳转到原来访问的页面了,紧接着我们看看Login.aspx是如何做的

protected   void  Page_Load( object  sender, EventArgs e)
{
      
if  (Request.IsAuthenticated)
      {
          Response.Redirect(
" ~/logined.aspx?ReturnUrl= "   +  Server.UrlEncode(lnkReturnUrl.NavigateUrl));
           
return ;
      }
         
      
if  ( ! string .IsNullOrEmpty(Request.QueryString[ " ReturnUrl " ]))
      {
          returnUrl 
=  Server.UrlDecode(Request.QueryString[ " ReturnUrl " ]);
      }
      
else
      {
           returnUrl 
=   " http://jquery.kevin.cc " ;
      }
}

 在Page_Load事件先得到页面传过来的跳转页面的具体值,以便登录成功以后跳转页面,下面一段代码将要展示登录按钮事件的处理方式:

protected   void  btn_submit_Click( object  sender, EventArgs e)
{
    
string  username  =  txt_userName.Value.Trim();
    
string  password  =  txt_Password.Value.Trim();
            
    
    
if  (Login(username,password))   // Login是登录的方法,在这里不是重点,如何实现的忽略了
    {
        ltMessage.Text 
=   " 登录成功,正在加载页面 " ;
        
// SetAuthCookie:为提供的用户名创建一个身份验证票证,并将该票证添加到响应的 Cookie 集合中或 URL 中
        FormsAuthentication.SetAuthCookie(username,  true );
        Response.Redirect(returnUrl);
    }
    
else
    {
         ltMessage.Text 
=   " 用户名或密码错误 " ;
         
return ;
     }
}

 经过这样的操作,我们就能在需要验证登录的页面,在登录成功以后,就能定位到访问的页面了。一个简单的流程就是这样的,具体实现就看大家自己去动手实现了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值