0

我正在编写和 ejabberd 模块来检查用户是否存在做某事,我正在使用 ejabberd_auth_external:is_user_exists("USER", "HOST") 来实现这一点,但是我没有 USER 但完整的 JID 以 USER@ 的形式HOST/RESOURCE,有没有办法让 USER 脱离那个字符串

4

2 回答 2

4

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

于 2013-10-17T00:45:29.317 回答
1

您可以使用带有分隔符“@”的函数 string:tokens/2,返回列表的第一个元素将是用户名:

JID = "user.name@host/resource".
[User|_] = string:tokens(JID, "@").
于 2013-10-16T05:35:48.213 回答