Sails.js sailsjs请求的全局上下文

Sails.js sailsjs请求的全局上下文,sails.js,Sails.js,有没有一种方法可以让我推断出给定请求的上下文 例如,当一个请求进入我的控制器时,该控制器将调用一堆不同的东西 对于几乎所有的请求,保证有来自mongodb的currentUserId和currentUserDoc 我有没有可能不必到处传递这些信息。取而代之的是,将它们保存在sails中的某种上下文对象中?因此,我可以简单地读取该上下文对象来推断currentUserId或currentUserDoc是什么 sailsjs有没有这样的功能 谢谢我明白你的要求,但如果你想清楚了,你可能会意识到这不是

有没有一种方法可以让我推断出给定请求的上下文

例如,当一个请求进入我的控制器时,该控制器将调用一堆不同的东西

对于几乎所有的请求,保证有来自mongodb的currentUserId和currentUserDoc

我有没有可能不必到处传递这些信息。取而代之的是,将它们保存在sails中的某种上下文对象中?因此,我可以简单地读取该上下文对象来推断currentUserId或currentUserDoc是什么

sailsjs有没有这样的功能


谢谢

我明白你的要求,但如果你想清楚了,你可能会意识到这不是个好主意

为了使其具体化,假设您的控制器方法调用一个名为getNotifications的助手方法,该方法获取当前用户的所有通知。现在,当您使用此方法时,您必须这样做:

getNotifications(req.currentUserId)
但你想这样使用它吗

getNotifications()
并让helper方法从某种全局对象中确定正确的用户

不起作用的原因是可能有一些请求同时从野外的用户进入控制器方法,每个请求都有不同的req实例和currentUserId。如何选择要分配给全局对象的对象


由于helper方法用于特定的请求,因此需要将该请求或请求本身的信息传递给该方法。代码可能很烦人,但将对象引用传递给helper方法确实不会在处理时间方面降低速度。

如果您使用oauth2+承载令牌作为安全模式,那么您可以向策略中添加一个检查有效承载令牌的调用。由于用户的令牌是1比1,因此验证令牌后,可以提取用户id并将其添加到请求中。对于userdoc id,我假设您有一种方法可以从请求头/主体中提取它,然后您还可以将它添加到请求中。然后,您的策略会将请求传递给控制器。策略在控制器操作之前执行。

只需将其添加到用户会话中即可。否?我理解你的意思。我在一个他们滥用process.domain作为上下文的地方工作。我没有仔细看他们是怎么做到的。但它实际上非常可靠。每个请求都以某种方式绑定到此域,并且该域是全局可访问的,并且每个请求仍然不同。