因?yàn)轫?xiàng)目需要,項(xiàng)目中的用戶名可以不唯一,所以項(xiàng)目中的openfire不能使用ofuser表中的username進(jìn)行登錄,經(jīng)過商議,兩種辦法解決: 1、標(biāo)記username字段中的內(nèi)容,比如,原用戶名為yezi,標(biāo)記后yezi#h,這個(gè)h是我們項(xiàng)目區(qū)分不同用戶名的方式,這個(gè)方式?jīng)]有技術(shù),不細(xì)說了; 2、在ofuser中添加一個(gè)字段(因?yàn)槲覀円恢痹谑褂胦fuser表),字段名為userID,主鍵,自增長,之后通過openfire自帶的自定義登陸方式進(jìn)行配置; 登錄到openfire后臺管理系統(tǒng),點(diǎn)開服務(wù)器管理器中的系統(tǒng)屬性,如下圖:
在這里可以進(jìn)行openfire系統(tǒng)屬性的配置與修改,而這個(gè)頁面配置的內(nèi)容保存在openfire數(shù)據(jù)庫中ofproperty表中,keyi打開看一下
里面的東西就不解釋了,就是一些openfire的系統(tǒng)設(shè)置
OK,墨跡完了,開始說正題: 我現(xiàn)在的需要的是使用userID登陸 在openfire源碼中找到org.jivesoftware.openfire.auth.JDBCAuthProvider,在文件中一開始,我們可以看到
大概意思就是把provider.auth.className 修改為 org.jivesoftware.openfire.auth.JDBCAuthProvider,之后登陸驗(yàn)證就走JDBCAuthProvider的代碼,下面還有一些需要配置的參數(shù),規(guī)則都有了,進(jìn)行配置吧。 根據(jù)自己的需要,我的配置如下:
配置完了后,重啟openfire,可以登陸(數(shù)據(jù)庫密碼是明文的,不是加密過的,加密過得密碼驗(yàn)證以后說),但是openfire后臺管理系統(tǒng)登陸不進(jìn)去 解決辦法:查看ofproperty表中name字段為admin.authorizedJIDs的peopValue字段值,格式應(yīng)為username@‘域名’,其中username應(yīng)為表中存在的數(shù)據(jù),域名為name字段為xmpp.domain的peopValue字段值,ok現(xiàn)在通過spark與后臺管理都可以登陸成功了 |
|