Discuz & UCenter 修改手記,discuz論壇_PHP教程

來源:互聯網
上載者:User

Discuz & UCenter 修改手記,discuz論壇


最近在整JAVA和UCENTER的東西,受限於項目架構需要,無法完全以UCENTER為中心,所以在對接過程中遇到了許多不愉快的事情。經曆多番研究,終於解決了其中了兩個大問題,現記錄下來,以備日後查看。

一、解決email必須填寫的問題

項目並不要求使用者註冊時填寫email,但UCENTER API要求必須輸入email才可以通過驗證,不得已必須得修改UCENTER代碼才能繞過。以下是改動的代碼:

/uc_server/control/user.php 69行:

1 // NOTE: 解決email必須填寫的問題2 //if(($status = $this->_check_email($email)) < 0) {3 //    return $status;4 //}

二、解決使用者必須手工登入1次論壇的問題

由於BBS屏蔽了DISCUZ內建的註冊、登入、找密等操作,所以必須要實現單點登入。當中遇到了一個非常蛋疼的問題:主站註冊的賬戶同步到UCENTER之後,UCENTER並不會通知其他應用,也就是說預設情況下,其他應用(包括DISCUZ在內)無法在新使用者註冊之後立即更新使用者列表。細細研究之後發現,DISCUZ是在本地註冊、登入等事件中才會與UCENTER同步。這導致了,在主站新註冊的使用者,無法在BBS單點登入成功——因為在BBS中根本不存在這個使用者。解決的方法有兩個,一是使用者手工登入一次BBS,BBS內建的機制會自動將使用者資訊從UCENTER同步過來;二是修改DISCUZ系統代碼,在單點登入請求時自動同步處理的使用者資料。在權衡了各方面因素之後,決定採用第二套方案。以下是改動的代碼:

/api/uc.php 192行:

 1 // NOTE 解決使用者必須手工登入1次論壇的問題 2 $member = getuserbyuid($uid, 1); 3  4 if (!$member) { 5     $init_arr = explode(',', $_G['initcredits']); 6     $groupid = $_G['regverify'] ? 8 : $_G['newusergroupid']; 7  8     C::t('common_member')->insert($uid, $get['username'], md5(random(10)), $get['email'], $_G['clientip'], $groupid, $init_arr); 9 10     $member = getuserbyuid($uid, 1);11 }12 13 if($member) {14     dsetcookie('auth', authcode("$member[password]\t$member[uid]", 'ENCODE'), $cookietime);15 }

http://www.bkjia.com/PHPjc/930048.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/930048.htmlTechArticleDiscuz UCenter 修改手記,discuz論壇 最近在整JAVA和UCENTER的東西,受限於項目架構需要,無法完全以UCENTER為中心,所以在對接過程中遇到了許多...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.