为 eJabberd 使用自定义用户 table

Use custom users table for eJabberd

更新答案

所以我有一个可以注册和登录的移动应用程序(当然还有其他功能,但在这种情况下它们并不重要)。现在我想给这个应用程序添加聊天功能。我安装了 eJabberd,导入了 SQL 脚本并启用了 SQL。这里的结果是两个用户table,一个是应用程序用于注册和登录的,另一个是通过导入ejabberd脚本创建的,ejabberdctrl默认注册它的用户。

然后我设置了外部身份验证,它使用应用程序用户table(不是由 ejabberd 创建的)。

现在我的问题是,有了这个绕过 ejabberd 用户的设置 table,ejabberd 服务器还能工作吗?例如,当 ejabberd 不知道应用程序用户 table 并且其 table 为空时,我将如何组织帐户花名册?

换句话说,我如何告诉 ejabberd 使用我的自定义应用程序 table 而不是默认的 table 来执行所有用户操作?我想避免在两个 table 中插入数据。

老问题(保留答案上下文)

我有一个有效的 ejabberd 安装,使用自定义脚本验证登录。它工作正常。但是现在遇到一个问题,预见性的问题比实际遇到的问题多。

截至目前,我在 ejabberd 用户 table 和自定义用户 table 中复制了用户。这意味着我需要 post 数据到我的注册 API 以及 ss ejabberd API。有没有办法告诉 ejabberd 在配置中使用某些 table 作为用户 table?或者如果我只是忽略用户 table 并且不完全注册和使用 ejabberd 用户会安全吗? ejabberd 的其余部分可以工作吗?

I have a working ejabberd installation authenticating login with custom script.

您使用的是哪种身份验证方法,来自 https://docs.ejabberd.im/admin/configuration/authentication/ 中记录的方法?

您使用的是“外部”吗?

As of now I have users duplicated in ejabberd user table and custom user table.

怎么可能?如果您使用“外部”身份验证脚本,则帐户凭据(用户名+密码)不会存储在 ejabberd 中。

什么是“ejabberd 用户 table”?什么是“自定义用户 table”?

您的设置中有些神秘的东西,无法帮助您。

不管 table 存在(或不存在)以及它们有什么内容,ejabberd 将仅使用您在 auth_method 中定义的内容,如 Authentication documentation 中所述:

auth_method: internal

ejabberd 将使用 Mnesia 内部数据库中的 'passwd' table。

auth_method: sql

ejabberd 将使用您配置的 SQL 数据库中的 'users' table。

auth_method: external

ejabberd 将使用 extauth 脚本。

auth_method: [sql, external]

ejabberd 将首先尝试使用 sql。如果失败,它将使用外部。 我不知道这里的细节,也没有找到文档,幸运的是你不需要这样做。

In other words, how can I tell ejabberd to use my custom app table for all users operations instead of its default table?

现在答案很简单:

auth_method: external