Asp.net Form验证后造成URL参数重复的问题

 
  

开发Asp.net网站, 开发网站使用Form验证, 需要在Web.config中加入如下节点

    

     < authentication  mode ="Forms" >
       < forms  loginUrl ="~/Public/Login"  timeout ="30"   />
     </ authentication >

打开带有参数的页面时,如果未登录或登录已超时,会自动跳转到Login页面, 但是当输入完用户名密码后, 如果使用 this.HttpContext.Request.UrlReferrer 获取之前的页面就会发现获取到的Url中包含重复的参数列表.
至于为什么会出现重复,可以参考:
 http://blogs.msdn.com/b/vijaysk/archive/2008/01/24/anatomy-of-forms-authentication-return-url.aspx 

可以这样获得没有重复的Url:
 
  
var urlPathAndQuery =  this.HttpContext.Request.UrlReferrer.PathAndQuery;
var returnUrlIndex = urlPathAndQuery.IndexOf( " ReturnUrl= ");
if (returnUrlIndex > - 1)
{
     var parameterIndex = urlPathAndQuery.IndexOf( " & ");
     string returnUrl = parameterIndex == - 1 ? urlPathAndQuery.Substring(returnUrlIndex +  10) : urlPathAndQuery.Substring(returnUrlIndex +  10, parameterIndex - (returnUrlIndex +  10));
    returnUrl = Server.UrlDecode(returnUrl);
     bool isNotLogoutUrl = returnUrl.IndexOf( " Logout ") == - 1;
     if (isNotLogoutUrl)
    {
         return returnUrl;
    }
}  


 

转载于:https://www.cnblogs.com/JasonBie/archive/2012/11/29/2795116.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值