我有一个isAuthorized
策略,如果用户被授权对给定的模型和模型实例执行给定的操作,则该策略返回true。
是否有办法将此策略应用于蓝图路由,例如,对file
的GET请求仅返回允许当前用户执行findOne
的文件?< / p>
同样,是否可以将相同的策略应用于蓝图填充结果,以便只在填充的数组中返回一些用户关联的文件?
为了做到这一点,我现在要覆盖每个控制器中的find
动作,这个动作不太理想。如果可以使用策略应用它而不破坏非常棒的蓝图路由/操作。
答案 0 :(得分:3)
在我的sails-permissions模块中,我覆盖了sails.js response
类型,以便控制器只响应允许用户访问的模型。
请参阅:
答案 1 :(得分:0)
这是帆的一部分,也许是一个新功能?
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();
}