【问题标题】:How to parse the ejabberd JID into its parts如何将 ejabberd JID 解析为其部分
【发布时间】:2013-10-17 08:45:29
【问题描述】:

我正在编写和 ejabberd 模块来检查用户是否存在以执行某些操作,我正在使用 ejabberd_auth_external:is_user_exists("USER", "HOST") 来实现这一点,但是我没有 USER 但表格中的完整 JID USER@HOST/RESOURCE,有什么方法可以让 USER 脱离那个字符串

【问题讨论】:

    标签: erlang ejabberd


    【解决方案1】:

    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

    【讨论】:

    • 编辑:在最近的 ejabberd 版本中,您应该改用 jid:from_string/1 以避免编译警告。
    【解决方案2】:

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

    JID = "user.name@host/resource".
    [User|_] = string:tokens(JID, "@").
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-14
      • 2016-02-28
      • 1970-01-01
      • 2010-12-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多