国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
UCenter在JAVA項目中實現(xiàn)的單點登錄應(yīng)用實例

Comsenz(康盛)的UCenter當(dāng)前在國內(nèi)的單點登錄領(lǐng)域占據(jù)絕對份額,其完整的產(chǎn)品線令UCenter成為了賬號集成方面事實上的標(biāo)準(zhǔn)。

基于UCenter,可以將Comsenz旗下的Discuz!(社區(qū)論壇系統(tǒng))、SupeSite(門戶CMS系統(tǒng))、X-Space(博客系統(tǒng))從用戶資源層面進行無縫整合,使得賬號實現(xiàn)統(tǒng)一管理,在任何一個系統(tǒng)中進行注冊、登錄、注銷等操作時,該賬號在其他系統(tǒng)中的會話狀態(tài)也將同步更新,最終實現(xiàn)一號通的單點登錄模式。

UCenter具備良好的擴展性,除了完美兼容自家的各種系統(tǒng)外,還支持其他項目的集成。

我現(xiàn)在準(zhǔn)備做的,就是要在一個JAVA項目中,將會員賬號部分與UCenter保持同步,以便將來可以順利的嵌入Discuz!社區(qū)論壇系統(tǒng)。

幸好,已經(jīng)有人為我們寫好了一個面向JAVA的UCenter接口方案,其項目地址為:http://code.google.com/p/discuz-ucenter-api-for-java

我本次也是基于這個名叫discuz-ucenter-api-for-java的API來實現(xiàn),感謝作者ping.china


 

一、準(zhǔn)備工作

1、下載UCenter:http://www.comsenz.com/downloads/install/ucenter

2、將UCenter部署到支持PHP腳本的服務(wù)器上,然后按照向?qū)нM行安裝即可。

3、訪問UCenter控制臺,添加新應(yīng)用,其中:

安裝方式:自定義

應(yīng)用類型:其他

應(yīng)用名稱:JAVA項目名稱,可隨意

應(yīng)用主URL:JAVA項目的訪問地址,例如:http://localhost:8080/javaTest

通信密鑰:任意字符,例如:123456

應(yīng)用接口文件名稱:uc.php,這個不要改,前面也不要加/api/,UCenter在與其通信時會自動轉(zhuǎn)換為:http://localhost:8080/javaTest/api/uc.php

是否開啟同步登錄:是

是否接受通知:是

以上的配置項必填,其他保持為空即可

點擊“提交”,保存成功后,記下該JAVA應(yīng)用的APPID,下面的配置中會需要。

此時返回應(yīng)用列表,UCenter會自動進行通信驗證,不出意外肯定會出現(xiàn)“通信失敗”的字樣,先不必管它

二、JAVA項目配置

1、從“discuz-ucenter-api-for-java”的開源項目網(wǎng)站中下載相關(guān)的API文件,也可以從這里下載:JAVA_UCenter.zip

2、將JAVA_UCenter.zip解壓、覆蓋到你的JAVA項目中,其中的新文件有:

src/config.properties:本地的JAVA項目與UCenter的接口配置文件(需要根據(jù)實際環(huán)境進行配置

src/api/ucenter/Base64.java

src/api/ucenter/Client.java:將常用的UCenter操作封裝成的客戶端對象,我們在項目中主要用它來與UCenter打交道

src/api/ucenter/PHPFunctions.java

src/api/ucenter/UC.java:本地的JAVA項目用來接收UCenter同步命令的Servlet接口,其訪問地址必須為:/api/uc.php

src/api/ucenter/XMLHelper.java

WebRoot/WEB-INF/web.xml:主要就是將src/api/ucenter/UC.java定義為Servlet

 

注意:

(1) src/config.properties中的代碼如下:

# ================================================
# Ucenter API for JAVA
# ================================================
UC_API = http://localhost:9201
UC_IP =
UC_KEY = 123456
UC_APPID = 2
UC_CONNECT =

其中,UC_API表示UCenter的訪問地址,UC_KEY就是在UCenter中添加新應(yīng)用時定義的通信密鑰,UC_APPID表示新應(yīng)用的APPID,就是剛才記下的那個。

除這三項外,其他的配置保持為空即可。

(2) WebRoot/WEB-INF/web.xml中的代碼如下:

<?xml version="1.0" encoding="UTF-8"?>
<web-app version="2.4"
    xmlns="http://java.sun.com/xml/ns/j2ee"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
    http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
    
  <servlet>
    <display-name>同步UC Server發(fā)出的操作指令</display-name>
    <servlet-name>UC</servlet-name>
    <servlet-class>api.ucenter.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>
 
</web-app>

別的無所謂,只需注意這一行:<url-pattern>/api/uc.php</url-pattern>

3、JAVA端配置完成,在eclipse中啟動調(diào)試模式

4、再次返回到UCenter的控制臺,點擊應(yīng)用管理,此時應(yīng)該會看到綠色的“通信成功”字樣

三、在JAVA項目中如何具體與UCenter進行通信

做到這里,JAVA項目與UCenter的基本集成工作已經(jīng)圓滿完成。

至于在JAVA中如何使用Client對象與UCenter進行同步通信,就很簡單了, 具體可以到discuz-ucenter-api-for-java的開源項目中查看

四、讓JAVA項目與Discuz!進行會話狀態(tài)同步

1、在JAVA項目中登錄、退出,同步到Discuz!

在JAVA項目中,用戶登錄成功之后,需要執(zhí)行以下代碼:

        Client uc = new Client();
        String $ucsynlogin = uc.uc_user_synlogin($uid);
        out.println($ucsynlogin);

其中的$ucsynlogin其實是一段JavaScript代碼,這段代碼是從UCenter返回的

目的就是向已經(jīng)在UCenter中注冊的應(yīng)用發(fā)送狀態(tài)同步請求,保持會話狀態(tài)一致性

所以,就要保證$ucsynlogin中的JS代碼必須輸出到瀏覽器,并且成功執(zhí)行

2、在Discuz!中登錄、退出,同步到JAVA項目

首先,要注意一個配置選項,位于Discuz!管理控制臺的:站長 - UCenter設(shè)置中

UCenter 連接方式:必須選擇“接口方式”,如果選擇“數(shù)據(jù)庫方式”,則不會向其他應(yīng)用發(fā)送同步請求

然后,在我們JAVA項目中,作為與UCenter對話的窗口,src/api/ucenter/UC.java就會負(fù)責(zé)接收其他應(yīng)用通過UCenter發(fā)送過來的會話狀態(tài)同步請求

其中的$action.equals("synlogin")為登錄同步,修改其中對Cookie的賦值代碼,實現(xiàn)本地系統(tǒng)的會話也保持登錄狀態(tài)

其中的$action.equals("synlogout")為登出同步,同樣,修改代碼,實現(xiàn)本地的登出同步。

注意其中的一行代碼:

response.addHeader("P3P","CP=\"CURa ADMa DEVa PSAo PSDo OUR BUS UNI PUR INT DEM STA PRE COM NAV OTC NOI DSP COR\"");

意思是要求瀏覽器對當(dāng)前的Cookie操作寬容對待,如果涉及跨域操作也不要阻止。所以,這行代碼原樣保留,可以使?fàn)顟B(tài)同步更加穩(wěn)定。

五、已知問題

貌似使用中文注冊的賬號,在同步時可能會因為Base64解碼不一致的原因發(fā)生問題,具體我還沒有測試,等到發(fā)生時再詳細(xì)記載。

 

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
java整合discuz單點登錄 | 鄒顥的博客
【新提醒】更換 Discuz! 和 UCenter 域名或者目錄,需要注意哪些事項?
這是一篇“不一樣”的真實滲透測試案例分析文章
Asp.net 與 UCenter 用戶同步之實施過程
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服