首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Meteor DDP上下文

Meteor DDP上下文
EN

Stack Overflow用户
提问于 2013-06-19 06:03:54
回答 1查看 457关注 0票数 0

我正在为分布式ddp客户端创建包

基本例程如下:

  1. 客户端连接
  2. 如果是新的,则使用Diffie-Hellman密钥交换算法协商自己的密钥和秘密。
  3. 然后用密钥和加密密码登录。

用户可以通过使用给定的ip搜索将客户端分配到他们的帐户。

这样我们就可以自动注册客户了。

我想解决的是在服务器端设计类似于Meteor.userId的功能。

step1: ddp客户机登录,(跳过DH算法)

代码语言:javascript
复制
//client:
DDPClient.call('register',[key:key,token:token, ip:ip]);

//server
Meteor.methods({
  'register' : function(options){
    var self = this;
    // check key token

    // store registered clientId similar to Meteor.userId in currentContext
    // self contains field _sessionData;
    // storing data inside this method works fine 
    _.extend(self._sessionData, {clientId: ID }
  }
});

step2: ddp客户端调用其他方法

代码语言:javascript
复制
//client:
DDPClient.call('other-method',[]);

//server
Meteor.methods({
  'other-method' : function(options){
    var self = this;
    //this returns what we set inside register method
    console.log(self._sessionData.clientId);
  }
});

Meteor.publish方法的问题是,有什么简单的方法可以用有效的ClientID重新启动当前上下文中的所有订阅吗?我可以遵循livedata包中的setUserId方法,但是它使用了很多我不想触及的内部元素

这一定要起作用

代码语言:javascript
复制
Meteor.publish('data' : function(){
  var self = this;

  var clientId = ?????

  return Data.find({owner : clientId});
});

或者还有别的方法来完成我的任务?我只想在上下文中保留client id,这样它就不必对每个方法调用进行授权。

这个解决方案是不可接受的。

代码语言:javascript
复制
Meteor.publish('data', function(clientId){

});
EN

回答 1

Stack Overflow用户

发布于 2013-09-02 15:40:42

Meteor.userId()已经存在于服务器端,在发布函数以外的任何位置。如果您在发布函数中,则可以使用this.userId

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17183937

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档