11

Sails.js (0.9v) コントローラーには、次のように定義されたポリシーがあります。

ウサギコントローラー: {

    '*': false, 

    nurture    : 'isRabbitMother',

    feed : ['isNiceToAnimals', 'hasRabbitFood']
}

これらの ACL にパラメーターを渡す方法はありますか。

ウサギコントローラー: {

    '*': false, 

    nurture    : 'isRabbitMother(myparam)',

    feed : ['isNiceToAnimals(myparam1, myparam2)', 'hasRabbitFood(anotherParam)']
}

これにより、異なるパラメーターに対してこれらの関数が複数使用される可能性があります。ありがとうアリフ

4

3 に答える 3

16

ポリシーは、署名付きのミドルウェア機能です。

    function myPolicy (req, res, next)

これらの関数に追加のパラメーターを指定する方法はありません。ただし、ポリシーを動的に作成するラッパー関数を作成できます。

    function policyMaker (myArg) {
      return function (req, res, next) {
        if (req.params('someParam') == myArg) {
          return next();
        } else {
          return res.forbidden();
        }
      }
    }

    module.exports = {

      RabbitController: {
        // create a policy for the nurture action
        nurture: policyMaker('foo'),
        // use the policy at 
        // /api/policies/someOtherPolicy.js for the feed action
        feed: 'someOtherPolicy'
      }

    }

実際には、このコードを別のファイルと別のファイルに分けたいと思うでしょうrequireが、これで始められるはずです。

于 2014-03-10T04:21:29.383 に答える
0

仕事をするSailsフックを作成しました: https://www.npmjs.com/package/sails-hook-parametized-policies

まだドキュメントを作成する必要がありますが、test フォルダーをチェックアウトして、それがどのように機能するかを確認できます。

ファイルを作成するだけですapi/policiesFactories/isNiceTo.js

module.exports = function(niceTo){
    return function(req, res, next){
        // policy code
    };
};

config/policies.json:

{
    RabbitController: {
        '*': false, 
        nurture: 'isRabbitMother(\'myparam\')',
        feed : ['isNiceToAnimals(\'myparam1\', \'myparam2\')', 'hasRabbitFood(\'anotherParam\')']
    }
}
于 2015-06-16T10:39:26.077 に答える