2017-02-22 81 views
0

我正在遷移0.10.5(已交給我)風帆0.12.x.Sails.js中間件與策略

該應用程序或多或少是移動(科爾多瓦/混合)客戶端使用的API。

作爲遷移的一部分,我想以適當的方式重建一些部件。

我問了一個關於中間件的問題,這個問題部分與here有關。

我使用護照進行身份驗證(替換舊的AuthController代碼),現在我實現了JWT(現在選擇不使用sails-auth)。

從我看到的情況來看,在大多數情況下,人們使用passport-JWT來驗證/檢查政策是否有合法的令牌。

在以前的實現,(expressJwt)中間件被用來「注入」用戶到請求和req.user在幾乎所有的控制器使用方法,並在現有的一些政策是依靠。

採取基於策略的方法將需要(幾乎)所有我的路線有一個isAuthenticated政策。這意味着如果有人忘記放置策略,控制器可能會失敗或更糟,未經身份驗證的用戶可能會訪問該路由。

它可以使用*: 'isAuthenticated'但由於政策覆蓋和不「瀑布」,它可能是有人(誰不「知道繩」)做somemethod: ['isThis','isThat']沒有調用isAuthenticated,導致同樣的漏洞。

問題是 - 我應該使用基於策略的方法還是添加自定義中間件來執行身份驗證並將用戶添加到請求中(我猜像passport.session會做些什麼,或多或少)在這裏有意義嗎?

我也使用socket.io,這樣做是否改變了一些有利於基於策略或基於中間件的方法? (我記得讀取「假」套接字路由僅通過一些中間件堆棧傳遞)

回答

0

政策

政策都應該是用於身份驗證。您不應僅使用策略來修改請求。如果請求與Auth相關,則可以使用它們來修改請求。

中間件

當你需要以某種方式修改請求(或響應),但它是不是無論如何身份驗證相關的你應該每次都使用中間件。