sailsjs请求的全局上下文

时间:2018-02-07 20:40:23

标签: sails.js

有没有办法可以推断出给定请求的上下文?

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

对于几乎所有请求,都保证mongodb中有currentUserId和currentUserDoc。

我是否有可能不必在整个地方传递这些信息。而是将它们保存在帆中的某种上下文对象中?这样我就可以简单地读取上下文对象来推断出currentUserId或currentUserDoc是什么。

sailsjs是否有这样的功能?

由于

2 个答案:

答案 0 :(得分:1)

我明白你要求的是什么,但是如果你想通过,你可能会意识到这不是一个好主意。

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

getNotifications(req.currentUserId)

但你想像这样使用它

getNotifications()

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

无法使用的原因是,可能会有一些请求全部进入您的控制器方法,这些请求是从野外用户进入的,每个请求都有不同的req实例和currentUserId。您如何选择分配给全局对象的那个?

由于您的帮助方法旨在用于特定请求,因此您需要将该请求(或请求本身)中的信息传递给方法。代码可能很烦人,但是将对象引用传递给辅助方法实际上不应该在处理时间方面减慢速度。

答案 1 :(得分:0)

如果您使用oauth2 +承载令牌作为安全模式,则可以添加对您的策略的调用,以检查您的有效承载令牌。由于令牌与您的用户是1比1,因此一旦您验证了令牌,您就可以提取用户ID并将其添加到请求中。对于userdoc id,我假设你有办法从请求标题/正文中提取它,然后你也可以将它添加到请求中。然后您的策略会将请求移交给控制器。策略在控制器操作之前执行。