免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
java整合discuz單點(diǎn)登錄 | 鄒顥的博客

java里沒有好的論壇,唯一好的大概就是jsprun,這個(gè)是仿discuz論壇,不過貌似團(tuán)隊(duì)不做了,也停止了更新了

最近項(xiàng)目里需要一個(gè)論壇,碰巧我以前是做php的,對(duì)于discuz ucenter以前也做過單點(diǎn)登錄,于是開始把discuz整合進(jìn)項(xiàng)目中.

首先先安裝ucenter,與discuz整合,如果不知道ucenter是什么?請(qǐng)自行百度.

現(xiàn)在的discuz項(xiàng)目直接下載下來在安裝的時(shí)候會(huì)讓你選擇是否整合進(jìn)ucenter,選擇是就行了,如果是已經(jīng)的論壇請(qǐng)自行整合進(jìn)ucenter.

java項(xiàng)目中有人已經(jīng)編寫了discuz-ucenter-for-java.我們用這個(gè)插件就可以實(shí)現(xiàn)java與php的對(duì)接的

先去https://code.google.com/p/discuz-ucenter-api-for-java/downloads/list下載discuz-api-for-java..

本人的環(huán)境:

apache-php :80端口

java:8080端口

網(wǎng)上也可以把php整合進(jìn)tomcat,讓php和java都用同一個(gè)端口,具體方法我就不講述

我這里php和java分別用的是2個(gè)端口

工具都差不多了.下面開始步驟了.

1:進(jìn)入ucenter后臺(tái).ucenter->應(yīng)用管理->添加新應(yīng)用

2:填寫應(yīng)用名稱,應(yīng)用的主url,通訊密鑰,勾上開啟同步登陸.,其他的都可以不填.創(chuàng)建好后,記錄應(yīng)用ID
3:將discuz-ucenter-api-for-java加入到項(xiàng)目中,配置web.xml
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!-- discuz論壇ucenter整合 -->
<servlet>
<servlet-name>
api
</servlet-name>
<servlet-class>
com.fivestars.interfaces.bbs.api.UC
</servlet-class>
<load-on-startup>
2
</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>
api
</servlet-name>
<url-pattern>
/api/uc.php
</url-pattern>
</servlet-mapping>
<!-- discuz論壇ucenter整合 -->

4:配置config.properties
PHP
1
2
3
4
5
UC_API = http://localhost/discuz/uc_server
UC_IP =
UC_KEY =x2ydu036Ubtf55gfyf2bR7Mc62v2a7J7rcrdA9Ncx259B323wegb87P5l7CaYd34
UC_APPID = 2
UC_CONNECT =

UC_API就是ucenter的路徑

UC_IP可以不填,會(huì)自動(dòng)根據(jù)域名解析該IP

UC_KEY就是通訊密鑰

UC_APPID就是ucenter添加應(yīng)用的ID

配好就可以,通訊就應(yīng)該成功了.

如果不成功,請(qǐng)?zhí)砑觟p.還有注意config.properties的路徑,我是自己修改了名字和路徑..修改路徑的話記得去Client.java里修改路徑,因?yàn)樗@里會(huì)讀取config.properties

接下來就是關(guān)于discuz-api-for-java的一些api

1:同步注冊(cè)

Java
1
2
3
4
5
6
7
8
9
10
11
Client discuzClient = new Client();
discuzClient.uc_user_register("zhangsan","password","zouhao619@gmail.com");
/**
-1 : 用戶名不合法
-2 : 包含不允許注冊(cè)的詞語
-3 : 用戶名已經(jīng)存在
-4 : email 格式有誤
-5 : email 不允許注冊(cè)
-6 : 該 email 已經(jīng)被注冊(cè)
>1 : 表示成功,數(shù)值為 UID
*/

2:同步登陸

Java
1
2
3
4
5
6
Client discuzClient = new Client();
String loginResult = discuzClient.uc_user_login("zhangsan","password");//根據(jù)賬戶密碼獲取用戶相關(guān)信息
LinkedList<String> userInfo=XMLHelper.uc_unserialize(loginResult);
uid=Integer.valueOf(userInfo.get(0));//獲取用戶的ID
String $ucsynlogin = discuzClient.uc_user_synlogin(uid);//根據(jù)ID進(jìn)行同步登陸
response.getWriter().print($ucsynlogin);//把$ucsynlogin輸出到頁面上就行了.這樣就實(shí)現(xiàn)了同步登陸,實(shí)際上就是一個(gè)script標(biāo)簽可以進(jìn)行跨域的功能

注意事項(xiàng):

1:ucenter->注冊(cè)設(shè)置->是否允許同一個(gè)email注冊(cè)多個(gè)用戶根據(jù)自己的實(shí)際情況來決定

2:同步注冊(cè)后,需要到discuz登錄一次,才能實(shí)現(xiàn)同步登錄.如果進(jìn)行同步注冊(cè)后,賬戶沒有登錄,那么也無法實(shí)現(xiàn)同步登錄,如果你要實(shí)現(xiàn)同步注冊(cè)后,就能登錄.就修改uc_server/model/user.php第129行左右的add_user($username, $password, $email, $uid = 0, $questionid = ”, $answer = ”, $regip = ”)方法

修改為如下內(nèi)容:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
function add_user($username, $password, $email, $uid = 0, $questionid = '', $answer = '', $regip = '') {
$regip = empty($regip) ? $this->base->onlineip : $regip;
$salt = substr(uniqid(rand()), -6);
$password = md5(md5($password).$salt);
$sqladd = $uid ? "uid='".intval($uid)."'," : '';
$sqladd .= $questionid > 0 ? " secques='".$this->quescrypt($questionid, $answer)."'," : " secques='',";
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."members SET $sqladd username='$username', password='$password', email='$email', regip='$regip', regdate='".$this->base->time."', salt='$salt'");
$uid = $this->db->insert_id();
$this->db->query("INSERT INTO ".UC_DBTABLEPRE."memberfields SET uid='$uid'");
  
//begin
$this->db->query("INSERT INTO `discuz`.dz_common_member SET uid='$uid', username='$username', password='$password', email='$email', adminid='0', groupid='10', regdate='".$this->base->time."', credits='0', timeoffset='9999'");
$this->db->query("INSERT INTO `discuz`.dz_common_member_status SET uid='$uid', regip='$regip', lastip='$regip', lastvisit='".$this->base->time."', lastactivity='".$this->base->time."', lastpost='0', lastsendmail='0'");
$this->db->query("INSERT INTO `discuz`.dz_common_member_profile SET uid='$uid'");
$this->db->query("INSERT INTO `discuz`.dz_common_member_field_forum SET uid='$uid'");
$this->db->query("INSERT INTO `discuz`.dz_common_member_field_home SET uid='$uid'");
$this->db->query("INSERT INTO `discuz`.dz_common_member_count SET uid='$uid', extcredits1='0', extcredits2='0', extcredits3='0', extcredits4='0', extcredits5='0', extcredits6='0', extcredits7='0', extcredits8='0'");
//end
return $uid;
}

在添加到ucenter的同時(shí)添加到discuz表中.

3:如果你要實(shí)現(xiàn)同步登錄,在頁面輸出discuzClient.uc_user_synlogin(uid),他其實(shí)是一段script,用來跨域訪問的.但是有可能由于網(wǎng)絡(luò)原因,你還沒有發(fā)出這個(gè)請(qǐng)求,你就先跳轉(zhuǎn)頁面了.所以造成無法同步登錄.

我用的方法是,用jquery.$.script()方法來加載這個(gè)js,由于是跨域,$.script()無法有返回,這個(gè)時(shí)候需要在php服務(wù)器端設(shè)置

PHP
1
header("Access-Control-Allow-Origin:*"); //允許任何訪問(包括ajax跨域)

詳細(xì)代碼如下:

JavaScript
1
2
3
4
5
6
7
<script>
$(function(){
$.getScript('script的目標(biāo)url', function(){
location.href='bbs路徑';
});
});
</script>

確定執(zhí)行完了這個(gè)js同步登錄后,在執(zhí)行l(wèi)ocation進(jìn)行跳轉(zhuǎn)

 

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
UCenter在JAVA項(xiàng)目中實(shí)現(xiàn)的單點(diǎn)登錄應(yīng)用實(shí)例
ECSHOP會(huì)員整合ECSHOP與discuz論壇完美整合教程
discuz論壇uc_server/ucenter創(chuàng)始人密碼忘記怎么辦
Discuz ucenter通訊失敗與Discuz的頭像無法顯示
遷移discuz論壇程序(搬家)數(shù)據(jù)庫連接出錯(cuò)UCenter info: MySQL Query Error
UCenter整合ASP.NET應(yīng)用
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服