openfire使用自定義使用者表
在最近的專案中使用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;
相關文章
- 使用 voyager 如何自定義,使用者表
- Laravel 中自定義使用者登入的資料表Laravel
- 使用者自定義異常
- LR.net使用者友好型自定義表單設計
- Avalonia的自定義使用者元件元件
- bootstrap中使用wtform,自定義表單bootORM
- Clickhouse 使用者自定義外部函式函式
- 【自定義使用者控制元件】CNMButton控制元件
- Loadrunner 使用者自定義函式使用[轉]函式
- sql mode 和使用者自定義分割槽SQL
- 前臺使用者自定義效能檢視
- Azure 使用者自定義路由 (User Defined Route)路由
- 自定義儀表盤
- Laravel5.6 實現後臺管理登入(自定義使用者表登入)Laravel
- 解析python使用者自定義異常例項Python
- 教你認識AWK 使用者自定義函式函式
- UserControl 使用者自定義控制元件控制元件
- php實現openfire使用者同步新增,刪除,修改PHP
- Oracle 11g PL/SQL 使用者自定義 ExceptionOracleSQLException
- Spark SQL使用簡介(2)--UDF(使用者自定義函式)SparkSQL函式
- Flink 自定義維表
- elementUI table 自定義表頭UI
- 自定義SAP功能表
- Laravel 自定義表單驗證-自定義驗證規則Laravel
- 使用 HTML5 Canvas 實現使用者自定義裁剪圖片HTMLCanvas
- spark2.4.3 sparkSQL 使用者自定義函式筆記SparkSQL函式筆記
- pyhanlp使用者自定義詞典新增例項說明HanLP
- 使用者自定義定時任務的php實現PHP
- 使用者體驗之——自定義Vs個性化方案
- 使用者自定義控制元件拖拽失敗問題控制元件
- saltstack匹配minion以及自定義使用者組nodegroup(三)
- 為nopcommerce自定義使用者積分功能(2)
- Hibernate使用者自定義資料型別問題資料型別
- SQL Server使用者自定義的資料庫修復SQLServer資料庫
- elementUI 2.0.11自定義表頭UI
- Layui 自定義表單驗證UI
- PHPCMS自定義表單樣式PHP
- 織夢 自定義表單HTML:HTML