源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Discuz! Passport 通行证整合

  • 时间:2022-10-02 05:51 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Discuz! Passport 通行证整合
解决办法: 第一步: 到dz的数据库表cdb_settings 找到下面这几行修改为 [img]http://files.jb51.net/upload/20080327224909423.gif[/img] 第二步: 删除dz安装目录/forumdata/cache/cache_settings.php 第三步: 重新访问论坛 登陆和注册整合流程 用户从登陆或注册表单提交帐号密码信息 ==> 主站程序检验用户登陆或注册,成功(注册需要生成新用户)则 ==> 设置主站自身的cookie或session    ==> url传递 返回地址forward和编码后的用户信息和其他信息 到dz/api/passport.php 整合之前请先仔细阅读官方passport技术文档: abc@hotmail.com                 member_info="time="  & datediff("s","1970-1-1 00:00:00",now) &_                                                         "&username=" & request.Form("username") &_                                                         "&password=" & md5(request.Form("password"),32) &_                                                         "&email="    & "abc@hotmail.com"                  auth = passport_encrypt(member_info , PassportKey)                                response.Cookies("auth")=auth                 forward=request.form("forward")                 if forward="" then forward=YourAspWeb_Url                        verify = md5("login" & auth & forward & PassportKey,32)                 auth=server.URLEncode(auth)                 forward=server.URLEncode(forward)                        response.Redirect(DiscuzBbs_Url & "api/passport.php?action=login&auth=" & auth & "&forward=" & forward & "&verify=" & verify)                                        '========================================================                 '===============passport 整合结束========================                 '========================================================         else                         response.Write("登陆失败<br>")         end if end function %> <form name="form1" method="post" action="login.asp?act=login">   用户名:   <input type="text" name="username">   <br>   密 码:   <input type="password" name="password">   <br>   <input type="hidden" name="forward" value="<%=request.QueryString("forward")%>">       <input type="submit" name="Submit" value=" 登 陆 "> </form> [img]http://files.jb51.net/upload/20080327224909210.gif[/img] abc@abc.com%22;//需要email的值,实际整合通常情况是从数据库里获取用户email             dzAuth          = passport_encrypt(memberInfo , dzPassportKey);             dzForward       = forward.Value.ToString().Trim();//获取返回地址             if(dzForward=="") dzForward = webUrl;//如果返回地址为空,则返回设置的页             dzVerify        = md5("login" + dzAuth + dzForward + dzPassportKey);             dzAuth          = Server.UrlEncode(dzAuth);             dzForward       = Server.UrlEncode(dzForward);             Response.Redirect(dzUrl + "api/passport.php?action=login&auth=" + dzAuth + "&forward=" + dzForward + "&verify=" + dzVerify);             //---------------------------passport注册或登陆整合结束-----------------------------         }else Response.Write("登陆失败<br>");     }     //------------------------------------以下为一些关键函数------------------------------     // 将字符串转换为byte数组         public byte[] strToByteAry(string str){         return Encoding.Default.GetBytes(str);     }    // c# dz通信证编码函数    public string passport_encrypt(string txt, string key){         byte[] randomNumber = new byte[1];         RNGCryptoServiceProvider Gen = new RNGCryptoServiceProvider();         Gen.GetBytes(randomNumber);         int rand = Convert.ToInt32(randomNumber[0]);         string encrypt_key = md5(rand.ToString());         byte[] txtAry = strToByteAry(txt);         byte[] encryAry = strToByteAry(encrypt_key);         int j = 0;         int ctr = 0;         byte[] tmp = new byte[2 * txtAry.Length];         for (int i = 0; i < txtAry.Length; i++)         {             ctr = ctr == encryAry.Length ? 0 : ctr;             tmp[j++] = encryAry[ctr];             tmp[j++] = xor(txtAry[i], encryAry[ctr++]);         }         return Convert.ToBase64String(passport_key(tmp, key));     }         // c# dz通行证解码函数     public string passport_decrypt(string txt, string key){         byte[] t = Convert.FromBase64String(txt);         byte[] btxt = passport_key(t, key);         byte[] btmp = new byte[btxt.Length];         int j = 0;         for (int i = 0; i < btxt.Length; i++, j++)             btmp[j] = xor(btxt[i], btxt[++i]);         return Encoding.Default.GetString(btmp);     }     // c# dz通行证密匙处理函数        public byte[] passport_key(byte[] btxt, string key){         key = md5(key);         byte[] keyAry = strToByteAry(key);         int ctr = 0;         byte[] tmp = new byte[btxt.Length];         for (int i = 0; i < btxt.Length; i++){             ctr = (ctr == keyAry.Length) ? 0 : ctr;             tmp[i] = xor(btxt[i], keyAry[ctr++]);         }         return tmp;     }         // 针对byte的异或         public byte xor(byte a, byte b){         return Convert.ToByte(a ^ b);     }     // 获取UNIX时间戳        public string time(){         DateTime dtStart = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1));         DateTime dtNow = DateTime.Parse(DateTime.Now.ToString());         TimeSpan toNow = dtNow.Subtract(dtStart);         string timeStamp = toNow.Ticks.ToString();         timeStamp = timeStamp.Substring(0, timeStamp.Length - 7);         return timeStamp;     }         // md5加密     public string md5(string str){         MD5 md5Hasher = MD5.Create();         string re="";         byte[] data = md5Hasher.ComputeHash(Encoding.Default.GetBytes(str));         for (int i = 0; i < data.Length; i++)             re += data[i].ToString("x2");                return re;     } } [img]http://files.jb51.net/upload/20080327224909210.gif[/img] [url=http://www.tenwe.com/tech/uploadfile/200702/20070227024435342.rar]/tech/uploadfile/200702/20://www.tenwe.com/tech/uploadfile/200702/20070227024435342.rar" target=_blank>/tech/uploadfile/200702/20070227024435342.rar[/url] 070227024435342.rar
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部