由于许多试验和错误是一个客户端登录,Meteor.userId()接缝在任何地方工作。由于应用程序的性质,现在使用多重登录进行模拟并不容易。
是否期望Meteor跟踪哪个用户调用哪个方法,特别是当所述方法调用public_method_A时调用private_method_B,其中方法A,B属于全局范围内的模块?
我尝试了一个用户登录,发现Meteor.userId()提供了正确的信息。 doc在任何地方都说,但发布功能 问:我是否需要在任何函数参数中传递userId,或者只需要在需要时使用Meteor.userId()并相信Meteor.userId()将始终获取调用第一个客户端方法的用户的id? 感谢
修改
如果在服务器代码中每个需要userId的位置使用Meteor.userId()。不是这个"函数调用"通过论证比较昂贵?
如果是这样,可以在服务器全局范围内创建全局范围* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
变量吗?即(如果每个客户端都获得一个新的服务器实例)
答案 0 :(得分:0)
预计Meteor是否会跟踪哪个用户正在调用哪种方法?
是的,在客户端发起的呼叫中也是如此。 Meteor.userId()
在所有情况下都是正确的,即使这些电话被链接也是如此。
但请注意,this.userId
将始终在第一个方法调用内返回正确的值,但不会持久存储到后续调用,除非它们的上下文绑定到调用者的上下文。
我是否需要在任何函数参数中传递userId?
正如the guide中所指出的,您不应该将用户的id传递给方法调用。在最好的情况下,它是多余的,在最坏的情况下,它是一个主要的安全漏洞。
如果客户启动方法调用(这很常见),您可以依赖Meteor.userId()
正确。如果从服务器启动任何函数调用(方法或其他)(这不常见),则Meteor.userId()
将不可用。