zoukankan      html  css  js  c++  java
  • 在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,这里可以进行修改。

    1 <admin>
    2         <authorizedUsernames>joe, jane</authorizedUsernames>
    3 </admin>

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

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

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

    • 用户数据集成,官方说明,如果使用了用户数据集成,那么就必须使用认证集成。示例如下:
     1 <provider>
     2     <auth>
     3       <className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
     4     </auth>
     5     <user>
     6       <className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
     7     </user>
     8   </provider>
     9   <jdbcAuthProvider>
    10      <passwordSQL>SELECT password FROM user_account WHERE username=?</passwordSQL>
    11      <passwordType>plain</passwordType>
    12   </jdbcAuthProvider>
    13   <jdbcUserProvider>
    14      <loadUserSQL>SELECT name,email FROM myUser WHERE username=?</loadUserSQL>
    15      <userCountSQL>SELECT COUNT(*) FROM myUser</userCountSQL>
    16      <allUsersSQL>SELECT username FROM myUser</allUsersSQL>
    17      <searchSQL>SELECT username FROM myUser WHERE</searchSQL>
    18      <usernameField>username</usernameField>
    19      <nameField>name</nameField>
    20      <emailField>email</emailField>
    21  </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查询。

      

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

      其中group中的className是固定的。

    1 <jdbcGroupProvider>
    2        <groupCountSQL>SELECT count(*) FROM myGroups</groupCountSQL>
    3        <allGroupsSQL>SELECT groupName FROM myGroups</allGroupsSQL>
    4        <userGroupsSQL>SELECT groupName FROM myGroupUsers WHERE username=?</userGroupsSQL>
    5        <descriptionSQL>SELECT groupDescription FROM myGroups WHERE groupName=?</descriptionSQL>
    6        <loadMembersSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='N'</loadMembersSQL>
    7        <loadAdminsSQL>SELECT username FROM myGroupUsers WHERE groupName=? AND isAdmin='Y'</loadAdminsSQL>
    8 </jdbcGroupProvider>

    以上配置简单说明:

      a. groupCountSQL: 查询组个数,

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

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

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

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

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

     

  • 相关阅读:
    边缘计算的下一场革命:1+1>2?
    深度学习黑箱:探秘人类编写的AI究竟在想什么
    Science:AI领域那么多引人注目的「进展」,竟是无用功
    什么是非结构化数据(unstructured data)?
    云计算的背水一战!核心技术决定未来!
    OpenAI最新论文:机器学习效率正在超越摩尔定律
    大数据和5G:这个交叉路口指向何方?
    实现一个边缘机器学习项目到底有多难?
    云计算模式:2021年的趋势是什么?
    当5G遇到新基建,边缘计算怎么发展?
  • 原文地址:https://www.cnblogs.com/bigbang92/p/Openfire-db_integration.html
Copyright © 2011-2022 走看看