仅允许用户通过我们的服务器端应用程序注册,而不是通过客户端库(例如 strophe)

Posted

技术标签:

【中文标题】仅允许用户通过我们的服务器端应用程序注册,而不是通过客户端库(例如 strophe)【英文标题】:Allow user registration through our server side application only not though client side library(e.g. strophe) 【发布时间】:2015-12-13 17:58:28 【问题描述】:

在我们的系统中,我们使用自己的逻辑来管理用户。用户可以在我们的系统中注册并依赖于其他实体。它检查用户数据的有效性和真实性,并对用户的主数据等负责。

现在每个用户都应该获得一个ejabberd 帐户。我们要做的是:在我们的逻辑中使用 Smack,并在 ejabberd 中创建一个帐户。问题是,用户可以绕过我们的逻辑并直接在ejabberd 中注册一个帐户。但是,我们希望ejabberd 用户和我们的用户保持同步,并且不希望允许通过任何 XMPP 客户端(例如 strophe.js)注册帐户,而只能通过我们的系统。

有什么解决办法吗?

【问题讨论】:

【参考方案1】:

最好的方法是在 ejabberd 中编写一个自定义身份验证插件来使用您的后端或使用 ejabberd contrib ejabberd_auth_http:https://github.com/processone/ejabberd-contrib/tree/master/ejabberd_auth_http

您也可以始终从后端在 ejabberd 中创建用户并在 ejabberd 中禁用 mod_register,但我不推荐这种方法,因为您会复制您的用户群。

【讨论】:

禁用mod_register 将禁用浏览器客户端的用户注册,并且仅从服务器端? Disabling mod_registed 禁用从 c2s XMPP 协议(​​标准 c2s 连接或 bosh)注册 ...以及如何在 ejabarrd 中禁用 mod_register 从 ejabberd 配置文件模块部分注释掉 mod_register。

以上是关于仅允许用户通过我们的服务器端应用程序注册,而不是通过客户端库(例如 strophe)的主要内容,如果未能解决你的问题,请参考以下文章

python练习基于socket的FTP程序(仅支持单用户)

在 Flutter 中仅允许 TextFormField 中的特定输入而无需验证

我可以创建一个围墙花园,只允许我组织的用户使用我的 ejabberd 实例

ios app中是不是允许使用paypal购买非消耗品服务

在 Silverlight SaveFileDialog 中打开文件而不是保存文件

服务器端用户输入验证