在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 ...
随机推荐
- cocos2dx 2.0 CCScrollView的用法以及滑动的原理
#ifndef __HELLOWORLD_SCENE_H__ #define __HELLOWORLD_SCENE_H__ #include "cocos2d.h" USING_N ...
- mac 使用技巧 (实时更新)
一.部分快捷键. 这个在网上有一大堆,不过笔者认为,还是应该看个人习惯和使用环境吧.如果用得顺手,那就是快捷键,如果用得不顺手,那应该称其为“辅助键”吧. 下面介绍几个常用的快捷键: 1.截图. 屏幕 ...
- VBS编辑字段
'为已经创建好的数据表添加字段'参数:strDBPath 字符串型 数据库路径'参数:strTableName 字符串型 需要创建的数据表的名称'参数:strColumnName 字符串型 需要添加的 ...
- string.Format 格式化输出日期
string.Format("{0:d}",System.DateTime.Now) 结果为:2009-3-20 (月份位置不是03) string.Format("{0 ...
- 解析工具Goson
/** * 解析申请分配座位席别 * @param json * @return */ public static TrainOrderResponse getTrainOrder(String js ...
- 数据库dump导入
数据库dump导入 一.导入命令介绍: Oracle dump数据导入导出有两种方式:imp/exp.impdp/expdp.两者区别: 1.exp/imp客户端程序,受网络,磁盘的影响:impdp/ ...
- -Dmaven.multiModuleProjectDirectory system propery is not set问题解决
-Dmaven.multiModuleProjectDirectory system propery is not set问题解决 eclipse中使用maven插件的时候,运行run as mave ...
- 关于启用 HTTPS 的一些经验分享
https://imququ.com/post/sth-about-switch-to-https.html 随着国内网络环境的持续恶化,各种篡改和劫持层出不穷,越来越多的网站选择了全站 HTTPS. ...
- Nginx服务测试时的一些配置:wireshark、常用搜索URL格式、关闭防火墙、siege
wrieshark sudo yum install wireshark-gnome sudo wireshar (以root启动,否则看不到网卡) 网站URL格式 以查询lumia为例 google ...
- Spring3 url匹配规则
Spring3 url匹配规则 Wildcard Description ? 匹配任何单字符 * 匹配0或者任意数量的字符 ** 匹配0或者更多的目录 宝贝网址: