[英]How can I filter Sails.js blueprint queries using a policy?
我有一個isAuthorized
策略,如果用戶被授權對給定的模型和模型實例執行給定的操作,則該策略返回true。
有沒有辦法將此策略應用於藍圖路由,例如,對file
的GET請求只返回文件,當前用戶可以執行findOne
?
同樣,是否可以將相同的策略應用於藍圖填充結果,以便在填充的數組中只返回一些用戶關聯的文件?
為了做到這一點,我現在在每個控制器中覆蓋不太理想的find
操作。 如果可以使用策略應用它而不破壞非常棒的藍圖路由/操作。
在我的sails -permissions模塊中,我覆蓋sails.js response
類型,以便控制器僅響應允許用戶訪問的模型。
看到:
這是帆的一部分,也許是一個新功能?
http://sailsjs.com/documentation/concepts/policies#?using-policies-with-blueprint-actions
{
UserController: {
find: ['isAuthorized', 'filterByUserId'],
findOne: ['isAuthorized', 'filterByUserId']
}
}
API /政策/ filterByUserId.js
module.exports = function filterByUserId(req, res, next) {
if ( req.session.user ){
// Use existing req.options.where, or initialize it to an empty object
req.options.where = req.options.where || {};
// Set the default `userId`
req.options.where.id = req.session.user.id;
}
//safe to do if isAuthorized policy is enforced in tandem.
return next();
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.