【问题标题】:SleekXMPP-How to check whether the user is authenticated or not?SleekXMPP-如何检查用户是否通过身份验证?
【发布时间】:2017-07-15 09:20:38
【问题描述】:

正如问题所说,我该怎么做?以下是代码-

import logging
from sleekxmpp import ClientXMPP

logging.basicConfig(level=logging.DEBUG, format='%(levelname)-8s %(message)s')


def on_session(event):
    xmpp.get_roster()

xmpp = ClientXMPP(jid, password)
xmpp.add_event_handler('session_start', on_session)
if xmpp.connect():
    print xmpp.authenticated  # Always prints `False`
    xmpp.process(block=True)

我可以在日志中看到打印,但我也想在代码中检查它。我该怎么做?

【问题讨论】:

    标签: python xmpp sleekxmpp


    【解决方案1】:

    在 XMPP 中,身份验证由 SASL 处理,通常在客户端连接后开始。

    在您的情况下,仅连接成功并不意味着已完成身份验证。您需要为 SASL 身份验证成功和失败的情况放置事件处理程序。通过ssleekxmpp事件,我相信可以通过监控auth_successfailed_auth事件来完成。可能的代码是:

    xmpp.add_event_handler("failed_auth", on_failed_auth)
    xmpp.add_event_handler("auth_success", on_auth_success)
    

    【讨论】:

    • 感谢@Manishg 提出这个问题。不知道这个。我现在可以将您的回答与stackoverflow.com/questions/9815422/… 结合起来解决我的用例。
    • 顺便说一句,SleekXMPP 中有哪些事件?有没有相同的wiki?想知道所有的事件。比
    • 另外,如果您能在stackoverflow.com/questions/42485797/…提供您的专业知识,将会很有帮助
    • 我没有找到任何描述此信息的维基。这是我通过他们编写的 SASL 代码观察到的。我认为 XMPP 基础知识在这里会有所帮助,但我可能错了。我会检查另一个问题。
    猜你喜欢
    • 2018-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-07-10
    • 2022-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-11
    相关资源
    最近更新 更多