【发布时间】:2013-10-17 08:45:29
【问题描述】:
我正在编写和 ejabberd 模块来检查用户是否存在以执行某些操作,我正在使用 ejabberd_auth_external:is_user_exists("USER", "HOST") 来实现这一点,但是我没有 USER 但表格中的完整 JID USER@HOST/RESOURCE,有什么方法可以让 USER 脱离那个字符串
【问题讨论】:
我正在编写和 ejabberd 模块来检查用户是否存在以执行某些操作,我正在使用 ejabberd_auth_external:is_user_exists("USER", "HOST") 来实现这一点,但是我没有 USER 但表格中的完整 JID USER@HOST/RESOURCE,有什么方法可以让 USER 脱离那个字符串
【问题讨论】:
ejabberd 中执行此操作的典型方法是使用 jlib:string_to_jid/1 函数:
-include("jlib.hrl").
...
case jlib:string_to_jid(String) of
#jid{luser = LUser, lserver = LServer} ->
ejabberd_auth:is_user_exists(LUser, LServer);
error ->
false
end.
另外,不要直接使用来自ejabberd_auth_external 模块的函数。请改用ejabberd_auth。
【讨论】:
您可以使用带有分隔符“@”的函数 string:tokens/2,返回列表的第一个元素将是用户名:
JID = "user.name@host/resource".
[User|_] = string:tokens(JID, "@").
【讨论】: