openfire使用自定義使用者表

2021-06-06 07:32:05 字數 2780 閱讀 9267

在最近的專案中使用openfire伺服器實現訊息推送功能,如果使用openfire自帶的使用者表,需要維護兩張使用者表,不是很方便,如果openfire能夠直接使用現有系統的使用者表就方便多了,而事實上openfire已經為我們考慮到了這一點,我們只需要做一些相關配置就可以了。

研究了下openfire的原始碼,發現實現此點的關鍵在於data provider的應用,簡單來說,就是在程式中需要用到持久化資料(比如使用者名稱、部門名這些,可以儲存在資料庫中,也可以儲存在xml檔案或者ldap目錄服務中)的地方,用乙個provider作為獲取資料的統一介面,針對不同的資料來源(可以是資料庫的不同表,也可以是nosql、xml等其它資料來源)進行相應的實現,比如其中authprovider介面(負責使用者驗證),它有兩個不同的實現defaultauthprovider和jdbcauthprovider ,前者是預設的openfire自帶表,而後者則是根據我們自定義的資料表,我們將預設的defaultauthprovider配置為jdbcauthprovider ,並新增一些配置文字,就可以進行資料來源的切換了。

進入openfire管理控制台-伺服器-服務管理器-系統屬性

增加以下鍵值對,或者在資料庫中直接更新資料表

--設定jdbc連線方式

insert into ofproperty (name, propvalue)

values ('jdbcprovider.connectionstring',

'jdbc:oracle:thin:@10.35.246.178:1521:orcl');

insert into ofproperty (name, propvalue)

values ('jdbcprovider.driver', 'oracle.jdbc.driver.oracledriver');

--設定管理員賬號

insert into ofproperty (name, propvalue)

values ('admin.authorizedjids', 'admin@localhost');

--自定義使用者認證

insert into ofproperty (name, propvalue)

values ('jdbcauthprovider.useconnectionprovider', 'true');

insert into ofproperty (name, propvalue)

values ('jdbcauthprovider.passwordsql', 'select ''123456'' as pwd from

t_sys_user t where t.code=?');

insert into ofproperty (name, propvalue)

values ('jdbcauthprovider.passwordtype', 'plain');

--自定義使用者管理

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.alluserssql', 'select code from t_sys_user

t');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.namefield', 'name');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.searchsql', 'select code from t_sys_user t

where code=?');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.useconnectionprovider', 'true');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.emailfield', 'email');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.usercountsql', 'select count(*) from

t_sys_user t');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.loadusersql', 'select t.name,t.email,t.code

from t_sys_user t where t.code=?');

insert into ofproperty (name, propvalue)

values ('jdbcuserprovider.usernamefield', 'code');

--使用不同的資料來源

update ofproperty set

propvalue='org.jivesoftware.openfire.user.jdbcuserprovider'

where name='provider.user.classname';

update ofproperty set

propvalue='org.jivesoftware.openfire.auth.jdbcauthprovider'

where name='provider.auth.classname';

commit;

Openfire驗證機制的修改(整合自定義使用者表)

注意 按照openfire官方的只是修改openfire.xml是錯誤的 可以不修改openfire.xml文件 步驟 正常步驟安裝完openfire 停止openfire服務 直接在資料庫執行 update openfire ofproperty set propvalue org.jivesof...

自定義使用者控制項

和做乙個web 窗體一樣,只是,如果引用其中的控制項的方法是如何?以下示例是asp.net 1.1裡的,2.0是怎麼引用,還沒有看書呢 string getddlyear,getddllc,getddladd,getddlpeopso getddlyear class ddlyear this.fi...

使用者自定義函式

create function 架構名.function name 傳入變數1 變數 型別,傳入變數2 變數 型別.returns return date type asbegin declare the return variable here declare variable1 variable...