使用pubsub桥和客户端在strongloop中进行身份验证

时间:2015-07-15 14:58:11

标签: authentication publish-subscribe strongloop bridge

我对如何在桥中使用auth有疑问。 Here我们可以看到下一个:

 window.onload = function(){

 function fullpay(){
    var cartbutton = document.getElementById("cartbutton");
    cartbutton.innerHTML = "<a href='/?add-to-cart=66' rel='nofollow' data-product_id='66' data-product_sku='' class='button add_to_cart_button'>Add to cart</a>";
}

 function payments(){
    var cartbutton = document.getElementById("cartbutton");
    cartbutton.innerHTML = "<a href='/?add-to-cart=69' rel='nofollow' data-product_id='69' data-product_sku='' class='button add_to_cart_button'>Add to cart</a>";
    }
 };

在这个例子中,我可以访问ctx并检查auth但是,如何从客户端包含auth?在我的客户端,我使用用户登录环回并获取accessToken,但我不知道如何验证客户端是否在通道中发布。

感谢!

2 个答案:

答案 0 :(得分:1)

Hook允许您在执行操作之前运行任意函数(例如,发布,订阅)。例如,此代码显示如何在将客户端消息发布到代理之前添加授权。该方法也可以与其他动作一起使用(例如,订阅)。有关更多详细信息,请查看Pubsub here

上的博客文章
// On the server...
// supported actions: connect, publish, and subscribe
bridge.before('publish', function(client, next) {
  var user = parseCredentials(client.credentials).user;
  canUserPublishToTopic(user, client.topic, function(err) {
    if(err) {
      // Not authorized, the action will be denied
      next(err); // Express-style error handling
    } else {
      next(); // the action will continue
    }
  });
});

// On the client...
client.publish('hello world');

答案 1 :(得分:0)

我刚想通了

您可以通过此类客户端选项传递您的用户凭据

var client = new Client({port: 3002, host: 'localhost', mqtt: {
    username: 'abc',
    password: 'abc'
  }}, Adapter, transport)