一、流程图解
这里写图片描述
二、相关数据表
tig_user–用户表
这里写图片描述

Uid             主键,自增
User_id         用户名(格式:用户注册账号@服务器域名)
Sha1_user_id        经过MD5加密后密码
User_pw         明文密码
Acc_create_time 注册时间(默认表数据插入时间)
Last_login      用户最近登录时间(默认0000-00-00 00:00:00)
Last_logout     用户最近退出登录时间(默认0000-00-00 00:00:00)
Online_status       用户上线次数(默认0)
Failed_logins       该用户账号登录失败次数(默认0)
Account_status  账号状态(1.正常 2.禁用(首次注册无密码,该账号就被置为禁用态))                 (默认1

tig_nodes–节点信息表
这里写图片描述

Nid             主键,自增,节点id
Parent_nid      父节点id
Uid             用户id,是tig_user表中uid的外键
Node            节点类型,可以自定义节点名称

Tig_pairs–用户节点信息表
这里写图片描述

Pid             主键,自增
Nid             节点id,是tig_nodes表中nid的外键
Uid             用户id,是tig_user表中uid的外键
Pkey                键       
Pval                值,以xml格式存储
tig_pairs以(key,value)的形式存储节点的具体数据,例如上表中,
第45行,对应tig_nodes中的root节点,存储该用户的好友列表
第6行,对应tig_nodes中的last-start节点,记录该用户上次登录时间

三、源代码分析
A.注册账号检测
接口:
这里写图片描述
实现类:
这里写图片描述
注册方法:
这里写图片描述
注册参数说明:
BareJID对象:
这里写图片描述

BareJID对象内封装了4个参数:
    domain:服务器域名
    localpart:账号名
    to_string:账号名@服务器域名
    hashcode:根据hash算法生成的int类型的一串数字
String  password:
用户注册密码(明文)

下一步:
调用存储过程:
这里写图片描述
1.调用TigAddUserPlanPw存储过程
这里写图片描述
经过TigAddUserPlanPw存储过程处理(when:哪些字段经过MD5加密,then:返还不同的结果),返回一个add_user字符串,该字符串包含user_id和user_pw

2.调用TigGetDBProperty存储过程
这里写图片描述
TigAddUserPlanPw存储过程中,调用了TigGetDBProperty存储过程,作用是查询出用户,对应节点下存储的信息(xml格式),再回来执行TigAddUserPlanPw存储过程。

验证失败:(账号已存在……),捕捉异常
这里写图片描述
B.验证通过,进入下一步,调用AuthRepository接口:
这里写图片描述
AuthRepository接口实现类AuthRepositoryMDImpl:
这里写图片描述
进入到addUser方法:
这里写图片描述
该方法是去查询该服务器中,是否有该用户的信息(单服务器忽略)

C.进入下一步:授权注册
这里写图片描述

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐