仅允许用户通过我们的服务器端应用程序注册,而不是通过客户端库(例如 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 实例