Openfire使用外部数据库详细教程

本文绝大部分内容均参照Openfire官方文档:Custom Database Integration Guide,地址如下:

http://www.igniterealtime.org/builds/openfire/docs/latest/documentation/db-integration-guide.html

Openfire使用外部数据库只需要在openfire/src/con/openfire.xml配置文件中进行相应的配置,不需要手动编码。配置分为两个阶段:1、进行openfire.xml的配置;2、登录到web管理后台进行手动配置;

阶段一:进行Openfire.xml的配置

1、外部数据库集成配置

配置驱动和连接字符串:

<jive>
  ...
  <jdbcProvider>
    <driver>com.mysql.jdbc.Driver</driver>
    <connectionString>jdbc:mysql://localhost/dbname?user=username&amp;password=secret</connectionString>
  </jdbcProvider>
  ...
</jive>
<jive>
  ...
 <jdbcProvider>
    	<driver>com.mysql.jdbc.Driver</driver>
    	<connectionString>jdbc:mysql://localhost/openfirev1?username=root</connectionString>
 </jdbcProvider>
  ...
</jive>

 我的数据库名叫openfirev1,mysql的用户名是root,没有设密码所以密码不用写。

2、认证集成配置

认证配置需要配置以下标签:

  • provider.auth.className--设置为org.jivesoftware.openfire.auth.JDBCAuthProvider
  • jdbcAuthProvider.passwordSQL--该SQL语句用于查询一个用户密码。SQL语句必须包含一个‘?’,它在执行时将被动态地替换
  • jdbcAuthProvider.passwordType--密码的类型。可用的有:plain(不加密)、md5、sha1、sha256、sh512
<jive>
  ...
  <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>
   ...
  </jive>
扫描二维码关注公众号,回复: 732060 查看本文章
<jive>
  ...
  <provider>
    	<auth>
    		<className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    	</auth>
    </provider>
    <jdbAuthProvider>
    	<passwordSQL>SELECT password FROM ofuser WHERE username=?</passwordSQL>
    	<passwordType>plain</passwordType>
   ...
  </jive>

 3、用户集成配置

用户集成是可选的,Openfire可用从外部数据库载入用户。如果你想使用用户集成,则必须先进行认证集成配置(如配置2)。用户集成配置需配置已下标签:

  • provider.user.className--设为org.jivesoftware.openfire.user.JDBCUserProvider
  • jdbcUserProvider.loadUserSQL--该SQL语句用于载入给定用户名的姓名和邮件地址信息。该SQL语句应该包括一个‘?’,它在执行时将被动态地替换
  • jdbcUserProvider.userCountSQL--用于计算用户数
  • jdbcUserProvider.allUsersSQL--用于载入数据库中的所有用户
  • jdbcUserProvider.searchSQL--用于在数据库中搜索符合条件的用户,是不完整的SQL语句,缺少where后面的内容,它在执行时将被动态地补全,如果不填则不能进行搜索
  • usernameField--用户名字段,用于搜索
  • nameField--昵称字段,用于搜索
  • emailField--邮箱字段,用于搜索
<jive>
  ...
  <provider>
    <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>
   ...
 </jive>
<jive>
  ...
     <provider>
    	<user>
    		<className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
    	</user>
    </provider>
    <jdbcUserProvoder>
    	<loadUserSQL>SELECT name,email FROM ofuser WHERE username=?</loadUserSQL>
    	<userCountSQL>SELECT COUNT(*) FROM ofuser</userCountSQL>
    	<allUserSQL>SELECT username FROM ofuser</allUserSQL>
    	<searchSQL>SELECT username FROM ofuser WHERE</searchSQL>
    	<usernameField>username</usernameField>
    	<nameField>name</nameField>
    	<emailField>email</emailField>
    </jdbcUserProvoder>
   ...
 </jive>

 4/openfire.xml文件配置完成!所有代码整合:

<jive>
    <adminConsole>
        <!-- Disable either port by setting the value to -1 -->
        <port>9090</port>
        <securePort>9091</securePort>
    </adminConsole>

    <locale>en</locale>

    <!-- Network settings. By default, Openfire will bind to all network interfaces.
      Alternatively, you can specify a specific network interfaces that the server
      will listen on. For example, 127.0.0.1. This setting is generally only useful
       on multi-homed servers. -->
    <jdbcProvider>
    	<driver>com.mysql.jdbc.Driver</driver>
    	<connectionString>jdbc:mysql://localhost/openfirev1?username=root</connectionString>
    </jdbcProvider>
    <provider>
    	<auth>  		<className>org.jivesoftware.openfire.auth.JDBCAuthProvider</className>
    	</auth>
    	<user> 		<className>org.jivesoftware.openfire.user.JDBCUserProvider</className>
    	</user>
    </provider>
    <jdbAuthProvider>
    	<passwordSQL>SELECT password FROM ofuser WHERE username=?</passwordSQL>
    	<passwordType>plain</passwordType>
    </jdbAuthProvider>
    <jdbcUserProvider>
    	<loadUserSQL>SELECT name,email FROM ofuser WHERE username=?</loadUserSQL>
    	<userCountSQL>SELECT COUNT(*) FROM ofuser</userCountSQL>
    	<allUserSQL>SELECT username FROM ofuser</allUserSQL>
    	<searchSQL>SELECT username FROM ofuser WHERE</searchSQL>
    	<usernameField>username</usernameField>
    	<nameField>name</nameField>
    	<emailField>email</emailField>
    </jdbcUserProvoder>
</jive>

 阶段二:登录http:127.0.0.1:9090进行后台管理的初始化设置。

首先在MySQL中建立数据库openfirev1。






此时,数据库中已经生成了所有表!


 

 


目前为止已经可以使用数据库中的用户了。现在我们测试一下~往数据库中的ofuser表中添加一条记录:用户名:tt,密码:tt,直接从数据库中添加和从控制台添加都可以。如下图就是从控制台添加:


然后从客户端spark登录:


登录成功!



 

 
 

猜你喜欢

转载自nausicaa12.iteye.com/blog/1873674
今日推荐