HttpHelper万能框架GetMergeCookie的问题

本文介绍了一种解决Discuz! (DZ) 登录框架中出现的GetMergeCookie问题的方法,该问题导致了重复的cookie值,影响了登录流程。通过自定义合并cookies的逻辑,实现了正确的更新。

用万能框架写了一个DZ带验证码POST登录一直错误 http://www.sufeinet.com/thread-17795-1-1.html 调试半天发现是框架GetMergeCookie的问题,,,真坑。。。

 

OldCookie

 

F9ZL_2132_saltkey=oHLnJLwj;
F9ZL_2132_lastvisit=1477040054; F9ZL_2132_sid=ZsTR8p; F9ZL_2132_lastact=1477043654%09member.php%09logging; F9ZL_2132_pc_size_c=0; F9ZL_2132_stats_qc_reg=deleted

NewCookie

F9ZL_2132_lastact=1477043656%09misc.php%09seccode

 

HttpHelper.GetMergeCookie 合并更新后  导致有两个 F9ZL_2132_lastact=

F9ZL_2132_saltkey=oHLnJLwj ;
F9ZL_2132_lastvisit=1477040054 ;
F9ZL_2132_sid=ZsTR8p ;
F9ZL_2132_lastact=1477043654%09member.php%09logging ;
F9ZL_2132_pc_size_c=0 ;
F9ZL_2132_stats_qc_reg=deleted ;
F9ZL_2132_lastact=1477043656%09misc.php%09seccode

 

正确更新:

F9ZL_2132_saltkey=oHLnJLwj;
F9ZL_2132_lastvisit=1477040054;
F9ZL_2132_sid=ZsTR8p;
F9ZL_2132_lastact=1477043656%09misc.php%09seccode;
F9ZL_2132_pc_size_c=0;
F9ZL_2132_stats_qc_reg=deleted

 

找了个方法解决了这个,账号也登录成功了。勿喷,,不知道框架那个是不是BUG。。。

public static string MergerCookies(string OldCookie, string NewCookie)
       {
           if (!string.IsNullOrEmpty(OldCookie) && !string.IsNullOrEmpty(NewCookie))
           {
               if (OldCookie == NewCookie) return OldCookie;
               else
               {
                   List<string> Old = new List<String>(OldCookie.Split(';'));
                   List<string> New = new List<String>(NewCookie.Split(';'));
                   foreach (string n in New)
                   {
                       foreach (string o in Old)
                       {
                           if (o == n || o.Split('=')[0] == n.Split('=')[0])
                           {
                               Old.Remove(o);
                               break;
                           }
                       }
                   }
                   List<string> list = new List<string>(Old);
                   list.AddRange(New);
                   return string.Join(";", list.ToArray());
               }
           }
           else if (!string.IsNullOrEmpty(OldCookie)) return OldCookie;
           else if (!string.IsNullOrEmpty(NewCookie)) return NewCookie;
           else return "";
       }

 

转载于:https://www.cnblogs.com/testsec/p/5985704.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值