openfire忘记账号密码不登陆怎么改密码

3865人阅读
以前学习过用Scoket 建立聊天,简单的建立聊天是没问题的,但如果要实现多人复杂的聊天,后台服务器代码就比较复杂,对于我这新手来讲就比较难了。后来在网上看到用openfire做服务器,利用强大的Smack API库来实现IM聊天就简单多了。&
网上也有很多关于这方面的资料,我就在这里把网上的资料和自己的理解总结一下和大家一起交流学习。
需要用到以下几个工具:
Openfire &最新版本(openfire&3.8.1)&
下载地址:
安装配置可参考:
Spark &最新版本(Spark 2.6.3)
下载地址:
ASmack &最新版本 (asmack-jse-buddycloud-.jar)
由于在Android平台下开发 所以我们用到的是 aSmack,与Smack没有很大的区别
下载地址1:&(现在用的就是这个,修改了一些BUG)
下载地址2:
需要安装的安装好,需要下载的下载好(这里就不多作介绍)。创建项目工程,导入ASmack jar包,OK,下面就一起去学习怎么实现&用户注册、登录、修改密码和注销等一些功能!
首先第一、与服务器建立好连接
关键代码:127.0.0.1为服务器IP,5222为服务器端口号
第二、实现注册
关键代码:
以下代码注释都很清楚了,如有不懂的地方可以留言,这里就不多做解释了。
第三、实现登录
关键代码: 代码很简单不做太多解释
第四、修改密码
关键代码:同样很简单
第五、更改用户状态
关键代码:好吧,代码有点多,不过很清晰
第六:注销
关键代码:很简单吧!
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:50840次
排名:千里之外
原创:17篇
转载:63篇
评论:28条
(2)(1)(3)(1)(1)(3)(3)(1)(2)(1)(1)(13)(2)(3)(6)(2)(7)(8)(18)(3)今天看啥 热点:
iOS_32_XMPP环境搭建,ios_32_xmpp搭建
oXMPP:The Extensible &Messaging and Presence Protocol(可扩展通讯和表示协议)
oXMPP可用于服务类实时通讯、表示和需求响应服务中的XML数据元流式传输。
XMPP以Jabber协议为基础,而Jabber是即时通讯中常用的开放式协议
oXMPP是基于XML的协议,用于即时消息(IM instant message)以及在线现场探测。
促进服务器之间的准即时操作。
o即时通讯技术(IM)支持用户在线实时交谈。
oIM系统最大的区别在于各自通讯协议的实现,
所以即时通讯技术的核心在于它的传输协议
o协议用来说明信息在网络上如何传输,
目前已经出现过的IM协议包括:
IETF的对话初始协议(SIP)和即时通讯对话初始协议和表示扩展协议(SIMPLE)、
应用交换协议(APEX)、
显示和即时通讯协议(PRIM)
基于XML且开放的可扩展通讯和表示协议(XMPP)
XMPP又常称为 Jabber协议
oXMPP是基于XML的协议。
oXMPP前身是Jabber(1998年),
是一个开源组织定义的网络即时通信协议
oXMPP是一个分散型通信网络,任何XMPP用户都可以向其他任何XMPP用户传递消息。
多个XMPP服务器也可通过一个专门的“服务器-服务器”协议相互通信,
oXMPP是一种基于XML的协议,是可扩展的。
可以通过发送扩展的信息来处理用户的需求,
以及在XMPP的顶端建立如内容发布系统和基于地址的服务等应用程序。
而且,XMPP包含了针对服务器端的软件协议,
使之能与另一个进行通话,
这使得开发者更容易建立客户应用程序或给一个配置好的系统添加功能
oXMPP的核心XML流传输协议的定义使得XMPP能够在一个比以往网络通信协议更规范的平台上。
oXMPP的即时通讯扩展应用部分是根据IETF在这之前对即时通讯的一个抽象定义的
oXMPP的扩展协议Jingle使得其支持语音和视频
oXMPP的官方文档时RFC 3920
oXMPP是一个典型的C/S架构,
大多数情况下,当两个客户端进行通讯时,
他们的消息都是通过服务器传递的。
采用这种架构,主要是为了简化客户端,
将大多数工作放在服务器端进行
oXMPP中定义了三个角色,
客户端,服务器,网关。
通信能够在这三者的任意两个之间双向发生
o服务器同时承担了客户端信息记录,
连接管理和信息的路由功能
o网关承担着与异构即时通信系统的互联互通,
异构系统可以包括SMS(短信),MSN,ICQ等
o基本的网络形式是单客户端通过TCP/IP连接到单服务器,
然后在此连接之上传输XML流
通讯步骤:
1.节点连接到服务器
2.服务器利用本地目录系统中的证书对其认证
3.节点指定另一个目标节点地址,让服务器告知其状态
4.服务器查找、连接并进行相互认证
5.节点之间进行交互
oXMPP应用传输的是与即时通讯相关的指令。
oXMPP的协议形式变成了XML格式的纯文本。
oXMPP的核心部分就是一个在网络上分片段发送XML的流协议。
这个流协议是XMPP的即时通讯指令的传递基础,
也是一个非常重要的可以被进一步利用的网络基础协议。
oXMPP用TCP传的是XML流
o缺点:数据量大,没有二进制传输
oXMPP是一种类似于HTTP协议的一种数据传输协议,
其过程就如同“解包装--〉包装”的过程。
只需要理解其接收的类型及返回的类型,
便可以很好的利用XMPP来进行数据通讯
oXMPP官方网站——xmpp.org
o每个XMPP客户端用户必须拥有一个全局惟一标识符。
标识符称为JabberID或JID。
鉴于协议的分布式特征,JID应包含联系用户所需的所有信息,
JID的结构类似于电子邮件地址
o客户端和服务器节点,被统称为XMPP实体,都拥有JID。
例如:beyondLtd公司的员工nana可能拥有JID形式如下:,
其中是 beyondLtd公司的XMPP服务器的地址,
nana是用户名
o框架地址:http://xmpp.org/xmpp-software/libraries/
o/robbiehanson/XMPPFramework
o可用服务器地址:xmpp.org/xmpp-software/servers/
Platform(s)
Latest Release
Apache Vysper
Windows / Linux
Apache License Version 2.0
mina.apache.org
citadel.org
CommuniGate Pro
Linux / Mac OS X / Windows
Commercial
Coversant SoapBox Server
Commercial
Linux / Mac OS X / Solaris / Windows
process-one.net
Linux / Windows
Commercial
iChat Server
Commercial
in.jabberd
inetdxtra.sourceforge.net
Isode M-Link
Linux / Solaris / Windows
Commercial
jabberd 1.x
jabberd.org
jabberd 2.x
Linux / Solaris / Windows
jabberd2.org
Jabber XCP
Linux / Solaris / Windows
Commercial
Jerry Messenger
Linux / Windows
Commercial
Kwickserver
Metronome IM
Linux / Mac OS X
lightwitch.org/metronome
MongooseIM
Linux / Mac OS X
Linux / Mac OS X / Solaris / Windows
igniterealtime.org
Oracle Communications Instant Messaging Server
Linux / Solaris / Windows
Commercial
Prosody IM
Linux / Mac OS X / Windows
prosody.im
Linux / Mac OS X / Windows
psyced.org
Siemens OpenScape
Commercial
Linux / Solaris / Mac OS X / Windows
tigase.org
Linux / Mac OS X
Linux / Solaris / Mac OS X
wokkel.ik.nu
oOpenfire简介
–采用Java开发,
开源的实时协作(RTC)服务器,
基于XMPP(Jabber)协议
–可以轻易的构建高效率的即时通信服务器
–安装和使用简单,并利用Web进行管理
–单台服务器可支持上万并发用户
下载完成后,如图
一、下载完成后,打开安装包,双击Pkg文件,开始安装
o下载并安装:http://www.igniterealtime.org/projects/openfire/index.jsp
o安装位置:/usr/local/openfire/
o安装位置该文件夹的用户访问权限&需要手动修改
o数据库脚本保存在/usr/local/openfire/resources/database文件夹下
目录禁止访问,需要手动添加当前用户帐号
二、解决办法:进入/usr/local文件夹,修改openfire目录权限 (右键,显示简介)
添加当前帐号用户,并为其赋予读写权限
修改为读写权限 ,并再次上锁
此时,可以访问openfire文件夹了
三、安装完成后,打开系统偏好
如果终始无法开启open fire,说明其依赖的JDK环境没有安装
四、若想成功启动Openfire,还需要安装JDK环境(200M左右)
JDK7下载地址:&/technetwork/java/javase/downloads/jdk7-downloads-1880260.html
JDK8下载地址:/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
查看机器上是否安装了JDK,bash终端中输入:
& & & & java -version &回车
查看机器上的版本:ls
-la /System/Library/Frameworks/JavaVM.framework/Versions/
JDK的安装目录为:/Library/Java/JavaVirtualMachines,里面有所有安装的JDK
查看系统是32还是64位的方法:
打开终端,在应用程序的工具下,输入代码:
-l -p IODeviceTree | grep &firmware-abi& | sed -e 's/[^0-9A-Z]//g'&&&&
EFI64或者EFI32代表你的机器支持64或者32位的
判断系统里是否已经安装&gcc编译器的方法是:
打开一个终端,输入命令&g++,
没有则输出command
not found,
若安装了则输出&not
input files。&
Mac版本&Eclipse下载(仅标记非必需)
http://www.eclipse.org/downloads/?osType=macosx&release=undefined
/android/studio/install/0.8.0/android-studio-bundle-135.1245622-mac.dmg
下载完毕,开始安装JDK8
安装好JDK之后,就可正常打开openfire了
五、点击上图的【open admin console】,正式开始配置openfire服务器
1.设置语言,选中文,端口默认【9090】
2.主机设置
设置主机的访问ip地址
域名:主机名.local & &比如:beyonddemacbook-pro.local
如果觉得自己的主机名不好听,可以在【系统偏好设置】---&【共享】
注意:域不能是机器名,否则会如下错误:
HTTP ERROR: 500 INTERNAL_SERVER_ERROR
本地的域,要设置为127.0.0.1
3.数据库设置
设置外部数据库(推荐,比如:MySQL),选择标准数据库连接,需提前安装,请参照上一篇
4.设置数据库连接 【前提是在数据库中新建好一个库】
ocreate &database &
o#修改数据库字符集
oalert &database openfire &default character set = utf8;
o#切换数据库
ouse openfire
o#执行数据库脚本创建数据表
source /usr/local/openfire/resources/database/openfire_mysql.sql
进入openfire安装目录 &/usr/local/openfire/resources/database/ 【如果提示没有权限,被拒绝,参照上面的做法】
再次进入mysql,
o使用openfire database
执行:source /usr/local/openfire/resources/database/openfire_mysql.sql
至此,前面数据库就配置好,可以继续配置openfire了
继续配置openfire
附其他库的URL固定写法及端口号
(1)数据库驱动选择:MySQL,前提是已安装MySQL(具体的安装方法可以参考上一篇:mac上安装MySQL)
(2)JDBC驱动,默认不变
com.mysql.jdbc.Driver
(3)数据库URL:
形式如下:
jdbc:mysql://你的主机名:端口号/数据库名称
这里设置为
jdbc:mysql://localhost:3306/openfire
jdbc:mysql://localhost:3306/openfire?rewriteBatchedStatements=true
其中主机名[host-name]改为localhost,
其中数据库名称[database-name]改为openfire (自己在mysql手动建立的库)
解决数据库字符编码问题,可以在后面加
?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
最终的url形式是
jdbc:mysql://localhost:3306/openfire?useUnicode=true&characterEncoding=UTF-8&characterSetResults=UTF-8
注意:前提是已存在一个名为openfire的数据库,否则会报如下错误,连接配置不成功
The Openfire database schema does not appear to be installed. Follow the installation guide to fix this error.&
前期的MySQL数据库准备工作如下:
&1&设置/usr/local/openfire文件夹的访问权限为可读写
方法1:在finder中前往文件夹/usr/local/,右键openfire文件夹,显示简介
点击如图右下角中的锁图标解锁,并设置权限为:可以读写
方法2:打开终端,输入如下命令
sudo chmod 777 /usr/local/openfire
其中777表示授权可读写权限,000表示无访问权限,(具体的含义可以参考上一篇:mac的终端命令)
&2&在终端中,登陆MySQL
mysql -u root -p
然后输入数据库的root密码
&3&创建数据库openfire
alertdatabase openfire default character set = utf8;
&4&导入openfire资源文件夹&resources/database下的数据表
source /usr/local/openfire/resources/database/openfire_mysql.sql
&在终端出现一排导入过程
&&5&刷新权限
&6&退出MySQL
(4)用户名和密码
这里的用户名密码,是访问MySQL数据库时使用的帐号:root,和安装MySQL设置的root密码
5.继续设置openfire的特性
如果不打算使用LDAP,则保持默认设置
&6.设置openfire服务器管理员的帐号和密码
密码:123456
可以随便填写一个管理员邮箱,输入要设置的密码
7.登陆管理控制台 admin 123456
默认的管理员帐号是“admin”,默认管理员密码“admin”,如果上面最后一步设置了新密码,则管理员密码是新密码123456
如果想去掉默认的admin帐号,并自定义,需要如下操作
(1)在终端中,登陆具体的数据库(openfire)
mysql -u root -p openfire
然后输入数据库的root密码
(2)删除表“ofUser”中的admin帐户
delete from ofUser where username='admin';
(3)创建自定义管理员(用户名:admin,密码:123456)
INSERT INTO ofUser (username, plainPassword, encryptedPassword, name, email, creationDate, modificationDate) VALUES ('admin','123456','e10adc3949ba59abbe56e057f20f883e','Administrator','','152','0');
& 注意:如果重设了用户名,必须重启openfire服务器&
六、卸载openfire
1.停止服务
在系统偏好设置的其他里,打开openfire偏好设置
点击Stop Openfire按钮,停止服务
2.删除文件
打开终端,输入以下命令
sudo rm -rf /Library/PreferencePanes/Openfire.prefPane
sudo rm -rf /usr/local/openfire
sudo rm -rf /Library/LaunchDaemons/org.jivesoftware.openfire.plist
其中第一条命令之后,需要输入本机管理员密码
3.如果想要重新安装openfire
打开终端,输入以下命令,打开openfire.xml,找到setup节点后 将值改为false,并drop掉openfire database
七、为openfire新建多个用户,供不同客户端软件之间测试
密码都是123456
八、配置一下客户端 (iMessage)
信息----&偏好设置
左下角的添加----&其他邮件帐户----&继续
帐户类型----&用户名@域名
& 如:admin@beyonddemacbook-pro.local----&创建
密码123456 (在Openfire中创建帐户时填写的密码)
弹出这个----&点击继续
成功上线----&jabber (意思是:通过客户端,通过用户名+密码+服务器域名 &从而连接上了Openfire,)
九、配置一下客户端 (Adium 23M左右)
Adium是一款Mac上开源免费的多协议聊天客户端,
Adium支持......等10多种知名的在线即时聊天协议,
这样,你可以使用Adium一款软件来代替其他多个聊天工具的客户端,
统一管理和统一聊天,支持中文,非常不错!
支持的服务列表如下----&
Jabber ID----&用户名@域名 & 如:nana@beyonddemacbook-pro.local----&创建
密码123456 (在Openfire中创建帐户时填写的密码)
通过iMessage的admin@beyonddemacbook-pro.local帐户
向nana@beyonddemacbook-pro.local发出申请好友请求----&
Adium上的帐户(nana)收到了好友申请
选择验证并添加
iMessage(admin)上面已经有了nana这个好友了
聊天界面如下
同理,通过Adium添加联系人也是一样的----&
通过的Adium的nana@beyonddemacbook-pro.local帐户
向iMessage的admin@beyonddemacbook-pro.local发出申请好友请求
十、配置一下客户端 (Spark 26M左右,依赖JRE6)
如果选择IOS学习,应该详细了解些情况:是不是老师有这方面的开发经验,而不是自学的老师给学生上课|;是否有appstore线上真实应用需确定 ;是否具有专业ios教学设备~;是否先就业后付款;试试华夏博大3G学院,反映不错.;Tn
你通过虚拟机安装mac系统,然后再mac系统里下载xCode,xCode自带模拟器,当然,有些功能模拟器不能完全实现,比如二维码和mapkit,但用来学习就足够了,希望能帮到你,请采纳。。。
相关搜索:
相关阅读:
相关频道:
Android教程最近更新1453人阅读
JAVA --J2ME J2EE(8)
安装了openfire后要求配置,通常用户名都是admin,密码是安装时用户所设定的密码。由于种种原因会出现无法登陆的现象。现有两种方法可以解决。
1. 进入openfire的安装目录下---&进入conf文件夹---&打开openfire.xml文件---&将&setup&true&/setup&中的true改为false &这样不用用户名和密码也可以登陆
2. 将openfire.xml文件中
&&&&&authorizedUsernames&jimuser&/authorizedUsernames&
&&&/admin&
&&&&adminConsole&&
&&&&&!-- Disable
either port by setting the value to -1 --&&&
&&&&&port&9090&/port&&&
&&&&&securePort&9091&/securePort&&
&&&/adminConsole&
红色代码处改为自己的用户名。
如果配置好数据库之后,可以用MYSQL对openfire进行用户名和密码的重新设置。参考以下网址:
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:83866次
积分:1828
积分:1828
排名:第15503名
原创:100篇
转载:24篇
(2)(106)(1)(2)(2)(1)(2)(8)基于openfire+smack开发Android即时聊天应用[一]-用户注册、登陆、修改密码、注销等 - 博客频道 - CSDN.NET
CloudStyle
分类:XMPP
1.开发准备
在官网上下载最新的Smack开发包,我下载的是smack4.1.4版本的,导入相应的jar包即可开始开发工作
注意:导入Smack4.1.x包后,需要导入额外的第三方jar包
第三方jar包下载地址:
2.Openfire服务连接(连接服务器)
public class XMPPUtil {
private static String host = "222.195.xxx.xxx";
private static int port = 5222;
private static String serviceName = "openfireName";
public static XMPPTCPConnection getXMPPConnection(Context ctx) {
SmackConfiguration.DEBUG = true;
XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
configBuilder.setHost(host);
configBuilder.setPort(port);
configBuilder.setServiceName(serviceName);
configBuilder.setDebuggerEnabled(true);
configBuilder.setCompressionEnabled(true);
SSLContext sc = SSLContext.getInstance("TLS");
MemorizingTrustManager mtm = new MemorizingTrustManager(ctx);
sc.init(null, new X509TrustManager[]{mtm}, new java.security.SecureRandom());
configBuilder.setCustomSSLContext(sc);
configBuilder.setHostnameVerifier(
mtm.wrapHostnameVerifier(new org.apache.http.conn.ssl.StrictHostnameVerifier()));
} catch (NoSuchAlgorithmException|KeyManagementException e) {
e.printStackTrace();
XMPPTCPConnection connection = new XMPPTCPConnection(configBuilder.build());
connection.addConnectionListener(new ConnectionListener() {
public void connected(XMPPConnection xmppConnection) {
Log.e("connect","connected");
public void authenticated(XMPPConnection xmppConnection, boolean b) {
Log.e("connect","authenticated");
public void connectionClosed() {
Log.e("connect","connectionClosed");
public void connectionClosedOnError(Exception e) {
Log.e("connect","connectionClosedOnError");
public void reconnectionSuccessful() {
Log.e("connect","reconnectionSuccessful");
public void reconnectingIn(int i) {
Log.e("connect","reconnectionIn: "+i);
public void reconnectionFailed(Exception e) {
Log.e("connect","reconnectionFailed");
connection.connect();
} catch (SmackException | IOException | XMPPException e) {
e.printStackTrace();
return null;
代码中的SSL认证可以参考:
3.登录openfire服务器
public static boolean login(Context ctx, String username, String password) {
XMPPTCPConnection connection = getXMPPConnection(ctx);
if (connection == null)
Log.e("login","connection == null");
return false;
connection.login(username, password);
return true;
} catch (XMPPException|SmackException|IOException e) {
e.printStackTrace();
Log.e("login","login failure");
return false;
4.用户注册
public Boolean registerUser(String username,String password)
XMPPTCPConnection connection = XMPPUtil.getXMPPConnection(this);
if (connection == null)
connection.connect();
} catch (SmackException | IOException | XMPPException e) {
e.printStackTrace();
Log.e("connect","连接服务器失败!");
AccountManager.getInstance(connection).createAccount(username,password);
return true;
catch (SmackException.NoResponseException | XMPPException.XMPPErrorException |
SmackException.NotConnectedException e)
Log.e("register", "注册失败!");
return false;
5.修改账号密码
protected boolean isConnected()
if (connection == null)
return false;
if (!connection.isConnected())
connection.connect();
return true;
} catch (SmackException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (XMPPException e) {
e.printStackTrace();
return true;
* 修改密码
* newpassword
public boolean changePassword(String newpassword) {
if(!isConnected()) {
return false;
AccountManager.getInstance(connection).changePassword(newpassword);
return true;
} catch (NoResponseException | XMPPErrorException | NotConnectedException e) {
Log.e(TAG, "密码修改失败", e);
return false;
排名:千里之外
(2)(2)(16)(5)(9)(3)(29)(2)(17)(0)(4)(12)(1)Openfire回应客户端是如何回应的?假如登录密码错误,从哪儿回复一个失败的包? - 开源中国社区
当前访客身份:游客 [
当前位置:
我想知道plain方式登录,验证密码如果失败,调用哪个类发送一个告诉客户端登录失败?
要做的是告诉客户端失败的原因,比如密码过期,账户不存在,锁定的状态(已经做出来,就是不知道怎么告诉客户端)
共有1个答案
<span class="a_vote_num" id="a_vote_num_
两种方式:1、写插件,2、自己写登陆不使用openfire的登录逻辑
更多开发者职位上
有什么技术问题吗?
类似的话题}

我要回帖

更多关于 openfire修改密码 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信