在Openfire中使用自己的数据表之修改配置文件
目前我使用的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&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中使用自己的数据表之修改配置文件的更多相关文章
- 在Openfire中使用自己的数据表之修改系统属性
通过修改Openfire安装目录的conf/openfire目录下是openfire.xml文件可以使用我们自定义的认证集成以及用户数据集成.其实仔细观察之后,在修改完配置文件再次启动openfire ...
- Oracle中使用游标转换数据表中指定字段内容格式(拼音转数字)
应用场景:将数据表TB_USER中字段NNDP的内容中为[sannanyinv]转换为[3男1女] 主要脚本:一个游标脚本+分割字符串函数+拼音转数字脚本 操作步骤如下: 1.创建类型 create ...
- C# 利用mysql.data 在mysql中创建数据库及数据表
C# 利用mysql.data 在mysql中创建数据库及数据表 using System; using System.Collections.Generic; using System.Linq; ...
- yii2中通过migration创建数据表
### yii2中通过migration创建数据表 准备工作: 1.首先保证php写入了环境变量 2.在项目内创建migrations目录(base版的需要手动创建) 3.配置文件中正确配置了数据库信 ...
- SQL语句(三)数据表的修改
数据表的修改 1. 创建实验表people people CREATE TABLE people ( name ), gender ), birthday ) ) 2.修改表 ALTER TABLE ...
- MySQL数据表的修改
数据表的修改包括列的增加.列的删除.约束的添加.约束的删除等. 添加单列 ALTER TABLE tbl_name ADD [COLUMN] col_name column_definition [F ...
- 3dTiles 数据规范详解[3] 内嵌在瓦片文件中的两大数据表
转载请声明出处:全网@秋意正寒 零.本篇前言 说实话,我很纠结是先介绍瓦片的二进制数据文件结构,还是先介绍这两个重要的表.思前想后,我决定还是先介绍这两个数据表. 因为这两个表不先给读者灌输,那么介绍 ...
- pycharm 直接删掉数据表之后,makemigration和migrate 之后,数据库中依然没有生成数据表的问题
综合分析一下行程这个问题的原因: 在终端中运行 select * from django_migrations; 查看 提交的记录,如果你的表删掉了,记录还在,那么数据库会觉得,这个表依然是存在的,所 ...
- 如何在MySQl数据库中给已有的数据表添加自增ID?
由于使用MySQL数据库还没有多久的缘故,在搭建后台往数据库导入数据的时候发现新增的表单是没有自增id的,因次就有了上面这个问题. 解决方法 1.给某一张表先增加一个字段,这里我们就以node_tab ...
随机推荐
- win32手动创建windows窗口的,小记
摘抄自文档,其中的函数需要以后花时间看 向 WinMain 添加功能 首先,在 WinMain 函数内部创建 WNDCLASSEX 类型的窗口类结构. 此结构包含有关窗口的信息,如应用程序图标.窗口的 ...
- jsp与Servlet
- nohup输入密码后继续后台运行
Linux/Unix 是真正的多用户,多任务.Linux 提供了 fg 和bg 命令,让你轻松调度正在运行的任务. 假设你发现前台运行的一个程序需要很长的时间,但是需要干其他的事情,你就可以用 Ctr ...
- C语言的time.h解释python的time
clock_t clock(void),对比python的clock() 返回程序执行的时间,clock_t的实际类型是long #include<Windows.h> Sleep(); ...
- 创建Android项目时出错——No resource found that matches the given name 'Theme.AppCompat.Light'
创建Android项目时出错,error: Error retrieving parent for item: No resource found that matches the given nam ...
- 无法连接到已配置的开发web服务器
http://jingyan.baidu.com/article/29697b91099847ab20de3c8b.html 这是防火墙造成的,将防火墙关闭即可
- 快速升级php5.6
!!yum list installed | grep phpcd /etc/yum.repos.drpm -Uvh https://mirror.webtatic.com/yum/el6/lates ...
- Linux_07------Linux的用户和用户组管理
段 * 用户名:密码占位符:用户编号:用户组编号:用户注释信息:用户主目录:shell类型 * 每一行对应一个用户 * * /etc/shadow 存储用户密码 * 与passwd配置文件一一对应, ...
- Visual Studio 换皮肤
通过字体和颜色修改 Visual Studio 提供了修改配色的入口,你完全可以根据自己的喜好进行自定义,下面就通过该方法把编辑器背景设置成 “豆沙绿”. 选择 工具 / 选项 / 环境 / 字体和颜 ...
- 在eclipse之中使用Junit
使用Junit单位测试,能够一定程度上减小项目bug的产生.很多时候,我们都是在main函数里面单独去测试一个方法,这样的测试非常不方便.使用Junit可以是测试单位和项目代码分离,一次性测试多个方法 ...