Jabber使用随机名称自动登录

时间:2009-06-19 04:40:35

标签: xmpp ejabberd

我正在使用JSJaCejabberd建立实时聊天。除了所有网站访问者都获得帐户“访客”外,所有工作都有效。如果两个访问者同时尝试实时聊天,则响应变得混乱或第一个用户被注销。

我可以随机设置访客姓名,但我需要检查该名称是否已注册或自动注册,并希望以前没有注册过。我尝试将每个登录名分配给随机资源名称,但这仍然合并了对话。

简而言之,我正在寻找允许多个匿名登录与livechat帐户开始个人对话的最简单方法。甚至更好(但可选)如果当主要实时聊天帐户在聊天时,实时聊天可以循环到不同的用户。

解决方案可以是基于Web客户端或基于服务器的,我不关心,因为我控制了两者(而ejabberd支持各种模块)。

顺便说一下,当我尝试自动注册一个注册账号时,JSJaC simpleclient demo会返回:

An error occured:
Code: 409
Type: cancel
Condition: conflict

我还没有确定是否可以忽略或覆盖自定义客户端或服务器设置。我想我可以检测到这个错误并在没有自动注册的情况下再试一次,但我希望听到更好/更容易的选择。

4 个答案:

答案 0 :(得分:2)

尝试在您的ejabberd服务器上启用anonymous login mode?然后你不必注册客户帐户,只需选择任何随机用户名和密码,ejabberd应该接受它们......

答案 1 :(得分:2)

我猜你可以在ejabberd中使用外部身份验证 我遇到了同样的情况:我希望匿名用户能够登录服务器,但是一些特殊用户也可以登录进行任务... 所以我决定编写一个php脚本作为ejabberd的身份验证处理程序。 然后它将接受名称以anon_ *开头的所有登录 并根据数据库验证其他用户。

答案 2 :(得分:1)

我们在一个项目中遇到了类似的问题 - 我们希望用户能够在不需要任何帐户创建或冲突的情况下登录 - 自动注册对我们无效,因为名称可能会发生冲突。最后,我们在ejabberd中选择了匿名登录和SASL身份验证 - 它允许匿名登录和动态帐户创建,我相信帐户不会留在系统上(只有在连接打开时它们才有效),但是我记得服务器将为用户生成随机ID。

使用Nicknames

可能可以解决GUID JID问题

Set up SASL

Ejabberd Support Page - SASL

答案 3 :(得分:0)

如果您无法使ejabberd的匿名模式正常工作,您可以尝试为每个用户的基本名称创建GUID,并立即注册用户。您需要一个定期脚本,从数据库中删除旧的未使用的帐户。