Sails.js中间件与策略

时间:2017-02-22 22:50:27

标签: javascript node.js sails.js

我正在将风帆0.10.5(已交给我)转移到帆上0.12.x.

应用程序或多或少是移动(cordova / hybrid)客户端使用的API。

作为迁移的一部分,我想以适当的方式重建某些部分。

我问了一个关于中间件的问题,这个问题与部分相关here

我使用护照进行身份验证(替换旧的AuthController代码),现在我实现了JWT(现在选择不使用sails-auth)。

从我所见,在大多数情况下,人们使用passport-JWT通过政策验证/检查是否有有效令牌。

在之前的实施中,(expressJwt)中间件用于"注入"用户进入请求并且req.user几乎在我的所有控制器方法中使用,并且在某些现有策略中依赖。

采用基于策略的方法将要求(几乎)所有路由都有isAuthenticated策略。这意味着如果有人忘记放置策略,控制器可能会失败或更糟,未经过身份验证的用户可能会访问该路由。

可以使用*: 'isAuthenticated',但由于政策覆盖并且没有“级联”,因此对于某人(他们不知道绳索"知道绳索" #34;)在不调用somemethod: ['isThis','isThat']的情况下执行isAuthenticated,导致相同的漏洞。

问题是 - 我应该使用基于策略的方法,还是添加自定义中间件来进行身份验证并将用户添加到请求中(我想像passport.session一样,或多或少)在这里有意义?< / p>

我也在使用socket.io这样做会改变一些有利于基于策略或基于中间件的方法吗? (我记得读过&#34;假的&#34;套接字路由只通过一些中间件堆栈)

1 个答案:

答案 0 :(得分:-1)

<强>策略

策略应该用于身份验证。您不应仅使用策略来修改请求。如果请求与Auth相关,则可以使用它们来修改请求。

<强>中间件

每当你需要以某种方式(或响应)修改请求时,你应该使用中间件,但它无论如何都不是auth相关的。