本文详析使用React Hooks、Firebase和一个名为Seald的新包开发多国语言在线客服系统聊天源码。非结构化数据的端到端加密可能复杂且重新开发成本高昂,这对于保护您的应用程序处理的机密数据至关重要。使用Seald SDK,我们对您的应用程序存储、生成或接收的数据执行端到端加密。

 仓库源码:kf.zxkfym.top

 php在线客服系统源码结构:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证

 它具有端到端的加密系统,包括几个功能:

 创建对话窗口;

 ●在房间中添加/删除用户

 ●修改对话

 ●注册/登录

 ●用户状态

 ●加密和解密消息

 使用的主要工具有:

 Firebase是一个即用型框架,它允许我们创建一个持久的身份验证系统,将我们的加密消息保存在数据库中,并在用户发布新消息时立即接收它们。

 React将成为我们的前端库,为我们应用程序中的每个状态执行和设计简单的视图。

 Seald我们将用来将端到端加密带入聊天的交钥匙。

 认证系统:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_数据_02

 我们的聊天应用程序只有 3 条带有身份验证的路由。注册、登录和对话管理。

 我们定义是否允许经过身份验证的用户使用路由。

 密码推导:

 通常,我们会以明文形式向 Firebase 发送密码,然后 Firebase 会使用SCRYPT等安全函数来派生它,以避免将其放入数据库中。

 在我们的例子中,我们希望阻止 Firebase 读取密码,即使它没有被存储,因为我们将使用它来保护Seald 身份的端到端(甚至来自 Firebase)。

 为此,我们只需执行与 Firebase 相同的操作,但在将其提供给 Firebase 之前:我们使用安全函数 ( SCRYPT ) 导出密码,然后将其用作密码。

 为了在这个应用程序中创建一个用户,一个包含 3 个字段的简单表单就足够了:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证_03开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证_04开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_数据_05

 代码中没有什么很复杂的。我们要求 Firebase 通过用户提供的电子邮件和密码创建身份验证。

 并添加一些关于用户的信息,如姓名和照片 URL。

 然后,我们添加 Seald 应用层来创建我们未来的

 登录:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证_06开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_应用程序_07

 然后,登录。用于访问房间并能够与其他用户聊天的经典表单(电子邮件/密码)。

 和注册时一样。我们检索用户及其Seald 帐户的Firebase 身份验证。

 聊天窗口:

 这就是有趣的部分的来源。

 在此应用程序中,可以与另一个用户进行一对一聊天,也可以在自定义房间中与一组用户聊天。

 创建窗口:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证_08开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_应用程序_09

 让我们一起详述这段代码:

 ●首先,我们将表单数据发送到Firebase。房间的名称和选定的用户是必需的。

 ●然后我们使用Seald SDK创建一个加密会话。这将允许加密和解密此房间的消息。

 ●最后,我们要发送第一条加密消息来欢迎这个房间的用户。

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证_10

 发送加密消息:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_身份验证_11

 现在,让我们聊天吧!但是,请记住,我们需要对消息进行端到端加密。

 在创建每条消息之前,我们需要检查是否有经过身份验证的 Seald 会话。如果没有,请使用 SDK 创建该会话。

 然后,会话允许我们加密一个字符串,这是我们的消息。

 Alice 👩 向Bob 👨发送消息:

 "Hello my friend"

 我们调用上述encrypt消息的方法:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_数据_12

 消息将变为:

"{\"sessionId\":\"NazDAYyuRw2lDKS0VaianA\",\"data\":\"8RwaOppCD3uIJVFv2LoP3XGXpomj0xsMv4qmMVy30Vdqor2w0+DVCXu3j13PEyN2KfJm6SiSrWDRMDziiiOUjQ==\"}"

 现在,Bob 👨(和房间的其他用户)需要解密 Alice 👩 的消息。我们怎样才能做到这一点?

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_数据_13开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_应用程序_14

 解密消息:

 现在我们知道如何发送加密消息,让我们看看如何立即检索消息并为其他用户解密。

 我们使用value事件来阅读我们的消息,因为它们在事件发生时就已经存在。此方法在附加侦听器时触发一次,并且在每次数据(包括子项)发生更改时再次触发。

 每次添加消息时,我们都会检索我们的消息列表。因此显示了一条加密消息,但现在我们需要能够解密它:

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_应用程序_15

 Bob 👨 实际上看到:

"{\"sessionId\":\"NazDAYyuRw2lDKS0VaianA\",\"data\":\"8RwaOppCD3uIJVFv2LoP3XGXpomj0xsMv4qmMVy30Vdqor2w0+DVCXu3j13PEyN2KfJm6SiSrWDRMDziiiOUjQ==\"}"

 我们在上面调用decrypt我们的加密消息的方法:

 Bob 👨 现在将看到:

"Hello my friend"

开源在线客服系统源码|基于PHP的在线客服系统代码附搭建教程_应用程序_16