因為項目需要,項目中的使用者名可以不唯一,是以項目中的openfire不能使用ofuser表中的username進行登入,經過商議,兩種辦法解決:
1、标記username字段中的内容,比如,原使用者名為yezi,标記後yezi#h,這個h是我們項目區分不同使用者名的方式,這個方式沒有技術,不細說了;
2、在ofuser中添加一個字段(因為我們一直在使用ofuser表),字段名為userID,主鍵,自增長,之後通過openfire自帶的自定義登陸方式進行配置;
登入到openfire背景管理系統,點開伺服器管理器中的系統屬性,如下圖:

在這裡可以進行openfire系統屬性的配置與修改,而這個頁面配置的内容儲存在openfire資料庫中ofproperty表中,keyi打開看一下
裡面的東西就不解釋了,就是一些openfire的系統設定
OK,墨迹完了,開始說正題:
我現在的需要的是使用userID登陸
在openfire源碼中找到org.jivesoftware.openfire.auth.JDBCAuthProvider,在檔案中一開始,我們可以看到
大概意思就是把provider.auth.className 修改為 org.jivesoftware.openfire.auth.JDBCAuthProvider,之後登陸驗證就走JDBCAuthProvider的代碼,下面還有一些需要配置的參數,規則都有了,進行配置吧。
根據自己的需要,我的配置如下:
配置完了後,重新開機openfire,可以登陸(資料庫密碼是明文的,不是加密過的,加密過得密碼驗證以後說),但是openfire背景管理系統登陸不進去
解決辦法:檢視ofproperty表中name字段為admin.authorizedJIDs的peopValue字段值,格式應為[email protected]‘域名’,其中username應為表中存在的資料,域名為name字段為xmpp.domain的peopValue字段值,ok現在通過spark與背景管理都可以登陸成功了