为了账号安全,请及时绑定邮箱和手机立即绑定

如何在“已发布”回调中访问客户端对象?

如何在“已发布”回调中访问客户端对象?

千巷猫影 2021-04-09 14:11:16
我正在将Mosca用作具有蚊帐后端的嵌入式MQTT代理。我主要将Mosca用作身份验证机制,可以读取jwt令牌并从中提取一些值。我创建了自己的授权者以读取mqtt密码字段中的JWT令牌并对其进行解码/验证。解码后,将解码后的字段添加到客户端对象,如下所示authenticate(client, username, password, next) {    try {        const decoded_token = jwt.verify(password.toString(), process.env.SECRET_KEY_BASE);        client.decoded_token = decoded_token;        next(null, true);    } catch(error) {        console.log('name: %s, error: %s', error.name, error.message);        console.log('unauthorized!');        next(null, false);    }}我想访问回调中的decoded_token值,published如下所示broker.on('published', (packet, client) => {    console.log(client.decoded_token);    console.log('Published', packet.topic, packet.payload);});上面的代码以某种方式无法按预期工作。我收到以下错误:TypeError:无法读取未定义的属性“ decoded_token”相反,如果代替console.log(client.decoded_token)我使用console.log(client),它可以工作,并且我可以decoded_token在客户端对象中看到该值。我有两个问题。为什么上面的代码不起作用?当我将值存储在客户端对象中时,该值是传递给客户端(传感器),可以随后续请求一起发送,还是仅存储在本地内存中?我是MQTT的新手,如果问题太幼稚,请原谅:)
查看完整描述

1 回答

?
拉丁的传说

TA贡献1789条经验 获得超8个赞

  1. 如果可以在客户端对象中获取encoded_token变量。然后我们可以通过以下方式访问它

client.decoded_token

如果使用vs代码或Webstrom进行开发,则可以使用内置调试器来调试和打印客户端对象。

  1. 您不能将值传递给下一个调用的客户端对象。


查看完整回答
反对 回复 2021-04-22
  • 1 回答
  • 0 关注
  • 140 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信