目前我使用的Openfire版本是3.10.3,以下使用说明也是在这个版本上做的修改。

  Openfire提供了两种方式使用用户数据表。一种是安装完成之后默认实现的org.jivesoftware.openfire.user.DefaultUserProvider,一种是org.jivesoftware.openfire.user.JDBCUserProvider,同样对于用户验证也提供了默认实现的org.jivesoftware.openfire.auth.DefaultAuthProvider,一种是org.jivesoftware.openfire.auth.JDBCAuthProvider。前者都是基于安装时候填的数据库表上建立用户表的。如果要想使用自己的用户表或者基于现有的用户表,则需要使用后者。

  使用自定义的用户表方法有两种,一种是修改配置文件,一种是登录系统修改系统属性。

  修改配置文件

  打开Openfire的安装目录,找到conf/openfire.xml配置文件,这个是Openfire加载系统属性的文件,加入以下配置即可修改一些系统属性。

  • 增加管理员

  Openfire默认的登录管理员名称是admin,这里可以进行修改。

 <admin>
<authorizedUsernames>joe, jane</authorizedUsernames>
</admin>

以上定义有两个用户名为joe和jane的用户可以登录管理控制台。

  •  使用自定义的数据库连接
 <jdbcProvider>
<driver>com.mysql.jdbc.Driver</driver>
<connectionString>jdbc:mysql://localhost/dbname?user=username&amp;password=secret</connectionString>
</jdbcProvider>
  • 自定义认证集成,openfire中默认使用的是md5加密密码的。
 <provider>
<auth>
<className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
</auth>
</provider>
<jdbcAuthProvider>
<passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
<passwordType>plain</passwordType>
</jdbcAuthProvider>

这里需要说明className是不能更改的字符串,passwordSQL是查询数据表的sql语句,passwordType是密码的加密方式,有plain、md5、sha1、sha256、sha512等几种字符串可填入。

  • 用户数据集成,官方说明,如果使用了用户数据集成,那么就必须使用认证集成。示例如下:
 <provider>
<auth>
<className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
</auth>
<user>
<className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
</user>
</provider>
<jdbcAuthProvider>
<passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
<passwordType>plain</passwordType>
</jdbcAuthProvider>
<jdbcUserProvider>
<loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL>
<userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL>
<allUsersSQL>SELECT username FROM myUser</allUsersSQL>
<searchSQL>SELECT username FROM myUser WHERE</searchSQL>
<usernameField>username</usernameField>
<nameField>name</nameField>
<emailField>email</emailField>
</jdbcUserProvider>

  其中,user和auth里面的className是Openfire内置的类名,不能更改。jdbcUserProvider是Openfire提供的一些获取用户数据的方法。因为用到自己定义的表,所以字段和表名可能不同,所以必须自定义sql。需要定义的方法有

  a. loadUserSQL : 根据用户名查询用户信息,包括名称和邮件。语句后有一个“?”,这个问号会被username替换掉。

  b. userCountSQL: 查询用户总数。

  c. searchSQL : 查询用户。where后面没有接入任何字符串,jdbcUserProvider会根据填入查询的用户名或者名称邮件等自动加进去查询。如果没有查询条件将不起作用。

  d. usernameField: 在自定义数据表中username的字段名。用于以上的sql查询。

  e. nameField: 在自定义数据表中name的字段名。用于以上的sql查询。

  f. emailField:在自定义数据表中email的字段名。用户以上的sql查询。

  

  •  分组集成,如果要使用自己的用户分组,那么也需要加入认证集成,这里认证集成就不再写了,仅展示分组集成配置。
 <provider>
<group>
<className>org.jivesoftware.openfire.group.JDBCGroupProvider</className>
</group>
</provider>

  其中group中的className是固定的。

 <jdbcGroupProvider>
<groupCountSQL>SELECT count(*) FROM myGroups</groupCountSQL>
<allGroupsSQL>SELECT groupName FROM myGroups</allGroupsSQL>
<userGroupsSQL>SELECT groupName FROM myGroupUsers WHERE username=?</userGroupsSQL>
<descriptionSQL>SELECT groupDescription FROM myGroups WHERE groupName=?</descriptionSQL>
<loadMembersSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='N'</loadMembersSQL>
<loadAdminsSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='Y'</loadAdminsSQL>
</jdbcGroupProvider>

以上配置简单说明:

  a. groupCountSQL: 查询组个数,

  b. allGroupsSQL: 查询所有的分组。

  c. userGroupsSQL: 根据用户名查询分组。

  d. descriptionSQL: 根据组名查询分组描述。

  e. loadMembersSQL: 根据组名加载分组里面所有的成员。

  f. loadAdminsSQL: 根据组名查询分组里所有的管理员。

 

在Openfire中使用自己的数据表之修改配置文件的更多相关文章

  1. 在Openfire中使用自己的数据表之修改系统属性

    通过修改Openfire安装目录的conf/openfire目录下是openfire.xml文件可以使用我们自定义的认证集成以及用户数据集成.其实仔细观察之后,在修改完配置文件再次启动openfire ...

  2. Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)

    应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...

  3. C# 利用mysql.data 在mysql中创建数据库及数据表

    C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...

  4. yii2中通过migration创建数据表

    ### yii2中通过migration创建数据表 准备工作: 1.首先保证php写入了环境变量 2.在项目内创建migrations目录(base版的需要手动创建) 3.配置文件中正确配置了数据库信 ...

  5. SQL语句(三)数据表的修改

    数据表的修改 1. 创建实验表people people CREATE TABLE people ( name ), gender ), birthday ) ) 2.修改表 ALTER TABLE ...

  6. MySQL数据表的修改

    数据表的修改包括列的增加.列的删除.约束的添加.约束的删除等. 添加单列 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [F ...

  7. 3dTiles 数据规范详解[3] 内嵌在瓦片文件中的两大数据表

    转载请声明出处:全网@秋意正寒 零.本篇前言 说实话,我很纠结是先介绍瓦片的二进制数据文件结构,还是先介绍这两个重要的表.思前想后,我决定还是先介绍这两个数据表. 因为这两个表不先给读者灌输,那么介绍 ...

  8. pycharm 直接删掉数据表之后,makemigration和migrate 之后,数据库中依然没有生成数据表的问题

    综合分析一下行程这个问题的原因: 在终端中运行 select * from django_migrations; 查看 提交的记录,如果你的表删掉了,记录还在,那么数据库会觉得,这个表依然是存在的,所 ...

  9. 如何在MySQl数据库中给已有的数据表添加自增ID?

    由于使用MySQL数据库还没有多久的缘故,在搭建后台往数据库导入数据的时候发现新增的表单是没有自增id的,因次就有了上面这个问题. 解决方法 1.给某一张表先增加一个字段,这里我们就以node_tab ...

随机推荐

  1. Jmeter组件1. CSV Data Set Config

    位置:Test Plan | Add | Config Element | CSV Data Set Config 意义: 脚本参数化 节省CPU跟内存(可以准备好数据文件去代替动态生成数据,节约CP ...

  2. springMVC操作mongoDB增删改查

    下面是mongoDb简单的增删改查(新闻类) 附:query.addCriteria(Criteria.where("modelId").ne("").ne(n ...

  3. linux 多个python版本的切换

    源码安装新的python版本,我的安装路径: /usr/self/Python3.5.2 修改软链接到你所安装的python版本中: 默认python命令是在/usr/bin/目录下 1 sudo m ...

  4. JS语法(二)

    JS变量 var 变量名 = 变量值://自己会判断什么类型 一个好的编程习惯是,在代码开始处,统一对需要的变量进行声明. var name = “xiaosan”, age = 22, addres ...

  5. No.014 Longest Common Prefix

    14. Longest Common Prefix Total Accepted: 112204 Total Submissions: 385070 Difficulty: Easy Write a ...

  6. noip2008解题报告

    T1.笨小猴 给出一个单词求出现次数最多和最少之差是不是质数. 很水的.统计一下反正就26个字母. T2.火柴棒等式 给出火柴棒数,求形如 a+b=c能拼成的等式个数. 先减去4根(+,=),然后枚举 ...

  7. Ms sql将首字母大写

    --辅助表 create table a ( a int ) declare @b int begin insert into a values(@b) end; go --表数据 ),id int) ...

  8. MySQL 的 RowNum 实现

    MySQL 的 RowNum 实现 MySQL 下面没有RowNum,排序后序号却无法得到,比较麻烦! 在网上找了再三,通过比较,确认了以下的方法是可行的 : rownum, CollectSn ,b ...

  9. js鼠标点击版tab切换

    代码很简单,主要是布局需要用心研究下,使用时需要把css内注释去除 <!DOCTYPE html> <head> <meta http-equiv="Conte ...

  10. 优雅的设计单线程范围内的数据共享(ThreadLocal)

    单线程范围内数据共享使用ThreadLocal /** * @Description TODO * @author zhanghw@chinatelecom.cn * @since 2015年12月1 ...