java和Discuz論壇實現單點登錄,通過Ucenter(用戶管理中心)

果學網-專注IT在線www.prismcollege.com

1,按照下面各大鏈接的教程,把Base64,Client,PHPFunctions,UC,XMLHelper加入web程序。
2,修改web.xml,加入
<servlet>
<display-name>同步UC Server發出的操作指令</display-name>
<servlet-name>UC</servlet-name>
<servlet-class>com.eee.wq.UC</servlet-class>
<load-on-startup>2</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>UC</servlet-name>
<url-pattern>/api/uc.php</url-pattern>
</servlet-mapping> 
3,在UCCENTER中,應用管理->添加新應用
在後臺UCCENTER添加應用,設置同步
應用的主 URL:  (你的java web程序的主目錄 例如  http://localhost:8080/demo)
應用接口文件名稱默認這個uc.php,前面不要加上api。它會自動加上
其他選擇是,其他默認
4,
在站點-> UC設置中  設置  自動激活 (必須)
在站點->UC 設置中UCenter 訪問地址: http://168.44.33.11/uc_server    (你的php uccenter論壇的地址)
5,
src/main/resources/uccenter.properties 如下
UC_API = php discuzz 論壇uccenter的URL地址   http://168.44.33.11/uc_server
UC_IP = php discuzz 論壇uccenter的IP地址
UC_KEY = 123456abc
UC_APPID = 2
UC_CONNECT = 
價值重點文章(網站和discuz同步)

1,java和Discuz論壇實現單點登錄,通過Ucenter(用戶管理中心)
http://www.tuicool.com/articles/raYFVjV
2,網站整合Discuz!NT論壇,網站用戶和論壇用戶統一併同步,詳解
http://www.bubuko.com/infodetail-400950.html
3,discuz x2.5論壇和其他系統整合反向數據同步問題
http://my.oschina.net/duwaiweb/blog/82953
4,ucenter整理tipask問答系統與discuz單項同步問題解決方法
http://www.111cn.net/phper/php/66908.htm

5,關於網站用戶接入,單點登錄,discuz,ucenter
http://forsecond.iteye.com/blog/895086
6,完美整合phpcms v9和discuz X3.1實現同步登陸退出論壇免激活
http://www.jb51.net/cms/109712.html
7,ecshop整合Discuz6.1後怎樣可以不激活直接讓用戶登錄?
http://zhidao.baidu.com/link?url=um_y3ppPfcklEG5Mo70jdaKfJUWzyh4EDNHU0WBqzdrzx1Ftmx7iWumKJMg8_4hU1wZDJgPRdkR8hEQyylDxgK
8,ucenter在Java中實現單點登錄問題
http://www.discuz.net/thread-3553733-1-1.html
9,Java項目實現與Discuz和Ucenter同步登錄
http://www.weste.net/2013/4-3/90163.html
10,36用ucenter實現discuz與javaweb單點應用
http://3y.uu456.com/bp-scssb3b07c1cfad618sfa706-1.html
11,java整合discuz小結(實現與論壇同步登錄等操作)
http://blog.csdn.net/white__cat/article/details/38332449
12,UCenter與Java語言的整合經驗
http://www.shangxueba.com/jingyan/89131.html
13,Discuz Ucenter與JAVA項目間單點登錄的實現方法
http://sell.moe/discuz-ucenter%E4%B8%8Ejava%E9%A1%B9%E7%9B%AE%E9%97%B4%E5%8D%95%E7%82%B9%E7%99%BB%E5%BD%95%E7%9A%84%E5%AE%9E%E7%8E%B0%E6%96%B9%E6%B3%95.html

注意事項:

錯誤1:
getTextContent xml報錯
解決方法:http://www.educity.cn/wenda/364192.html
2,
如果用戶在論壇或其他應用註冊,新用戶第一次登陸 UCenter Home 或其他應用時,需要手動登陸一次,以後可以同步登陸。
對於編碼爲 utf8 的用戶,注意檢查自己的 config 文件有沒有修改過編碼,默認的編碼是 ansi 編碼,而不是 utf8 編碼。
如果修改過 config 文件有 utf8 編碼,則會出現 UCenter 通信不成功導致的無法登錄情況。
3,
Discuz登錄同步java網站web網站登錄,中文亂碼問題
http://www.tuicool.com/articles/raYFVjV
傳進來的$code是需要uc_authcode()方法進行解密的,當中文的時候解密出來的$code是"".解決方法如下:在Client.java的uc_authcode()方法裏找到這句
String $result = $result1.substring(0, $result1.length());並把它改成:
String $result= $result1.toString();
try{
$result=new String($result.getBytes("iso-8859-1"),"GBK");
}catch (Exception e) {
$result = $result1.substring(0, $result1.length());
// TODO: handle exception
}
這樣還不行,解密出來的code中文部分仍是亂碼。所以在uc.java的$code = new Client().uc_authcode($code, "DECODE");這句下面還要加上$code = new String($code.getBytes("GBK"),"UTF-8");
可能有人會說直接轉成utf-8不行嗎?爲什麼要先轉成gbk呢?如果直接轉成utf-8的話,解密出來的$code是""。到此中文的問題就得到解決了。筆者下載的是GBK版本的discuz,
其他情況自己改一下編碼應該沒問題。
4,輸錯密碼導致很多用戶無法登陸,登陸15分鐘。
原來是內網ip段相同的原因
5,
UC_CONNECT = //默認爲Post類型,可以填mysql。這樣需要自己實現代碼。
6,
取消郵箱必須註冊 選項
首先在後臺--全局--註冊與訪問--註冊-"取消註冊郵箱必填"選擇是提交
必須是DISCUZ!X3.1新版本纔有
http://zhidao.baidu.com/link?url=j_Iq9b80TdDJE64RLeATm9W7amSVC3LbJIXIX6K0ICboXxPg_7PtUiyClv4qa1GG2KWPd86kX_Fb8CkntyHtg8NsWrYfR-VKZ9rQirs1_uO

下面爲意見參考:

09年意見:
1,讓所有使用discuz的用戶重新註冊

2,研究discuz的表結構,將你網站已經註冊的用戶信息導入(也就是把你網站的用戶表內容導入discuz的用戶表);
另外,這個過程最好用程序來做,這樣, 將來可以做個觸發器或者定時任務來自動完成。實時的更新discuz的用戶表數據
定時同步。可以放在每天半夜進行。時效性差點,但最省心。
觸發器。絕對實時。

3,如果是Mysql5以上,可以用view。讓Discuz通過view訪問你網站現存的用戶表
倒是不錯 ,不過他們在不同的數據庫 ,會不會很麻煩

4,重新開發一個管理用戶的Web服務,讓Discuz用戶的認證等處理都通過API進行。  Discuz的表結構文檔可以從官方下載。
這都要修改Discuz源碼了 ,不好吧

5,在你現有的網站用戶管理數據的基礎上,做一個用戶認證、登陸以及用戶信息更新的API(WEB服務),
把Discuz有關於用戶認證、登陸以及用戶信息更新的處理,所有的數據操作成重寫,
使其成爲訪問你API的DAO。
但是,這只是我的一個構想,具體能否這麼改,需要考察一下Discuz數據層與邏輯處理層的分離狀況(Discuz的設計很難說)

6,Discuz中有個通行證系統的,參考網上的Discuz通行證樣例,將原有的JSP登陸註冊部分按照通行證標準重新修改,然後在Discuz後臺設置通行證

13年意見:

7,我調用了Ucenter的接口API,發現只能創建UCenter下的用戶,而不能用於Discuz.
到DZ登錄一下,同時設置免激活
用戶,後臺,站長,UC設置

8,Discuz!x2.5 用戶中心ucenter添加用戶與論壇用戶同步激活設置方法
http://www.cnit618.com/html/kyxt/discuz/2497.htm

9,java和Discuz論壇實現單點登錄,通過Ucenter(用戶管理中心)
http://www.tuicool.com/articles/raYFVjV

10,根據這些cookie就可以在網站頁面中實現論壇登錄後同步到網站了
http://www.bubuko.com/infodetail-400950.html

11,註冊
java網站的註冊
boolean falg = tempUserService.insert(tempUserVO);
//同步論壇的註冊
String $returns = uc.uc_user_register(tempUserVO.getUsername(), tempUserVO.getPass(), tempUserVO.getEamil());
java網站web 網站登錄,同步Discuz論壇登錄
登錄民信web網站 > 調用Client裏面的UC登錄接口獲取用戶信息 > 接受返回的用戶XML信息並解析 > 調用Client登錄DIscuz論壇的登錄接口 
> 接受返回過來的js代碼 > 輸出到java網站web網站 > 跳轉到論壇地址(此時已經你會發現用戶已經登錄)

java網站退出,論壇同步退出
java網站網站註銷 > 調用Client裏面的uc_user_synlogout同時註銷論壇用戶

12,論壇登錄同步登錄java網站web

13,中文名登陸不了的,請將URLEncode.encode(str) 爲 URLEncode.encode(str,"GBK")








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章