风帆政策 – 使用variables

我开始获得相当多的风帆政策,看起来像这样:

... 'MyController':{ 'some': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled'], 'action': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled'], 'here': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled', 'extra'], }, .... 

问题是重复。 我想有一个快捷方式,如“userIsAuthenticated”。

我可以声明一个variables

 var userIsAuthenticated = ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled']; .... 'MyController':{ 'some': userIsAuthenticated, 'action': userIsAuthenticated, 'here': Array.concat(userIsAuthenticated, ['extra'], }, 

我的问题是这里的行动。 我认为语法很难阅读和容易出错。

我试着写:

 'MyController':{ 'some': userIsAuthenticated, 'action': userIsAuthenticated, 'here': [userIsAuthenticated, 'extra'], }, 

看起来很漂亮 它可能已经工作。 虽然我明白,我得到一个数组与两个项目,第一个项目是一个数组与3个项目。

所以,问题是。 在Sails中声明这样的策略是否安全? 在手册中找不到任何提及的语法( http://sailsjs.org/documentation/concepts/policies )。 有没有其他的方法?

所以,问题是。 在Sails中声明这样的策略是否安全? 在手册中找不到任何提及的语法( http://sailsjs.org/documentation/concepts/policies )。 有没有其他的方法?

通过使用

 var userIsAuthenticated = ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled']; .... 'MyController':{ 'some': userIsAuthenticated, 'action': userIsAuthenticated, 'here': Array.concat(userIsAuthenticated, ['extra'], }, 

要么

 'MyController':{ 'some': userIsAuthenticated, 'action': userIsAuthenticated, 'here': [userIsAuthenticated, 'extra'], }, 

你一无所获 因为文档是这样描述的,所以对于其他开发者来说更​​难以理解

 ... 'MyController':{ 'some': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled'], 'action': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled'], 'here': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled', 'extra'], }, .... 

但我知道你的感受。 所以你可以做的是在模型或控制器级别定义策略:

 module.exports.policies = { '*': true, MyModel: ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled'], // model level MyController: { // controller level '*': ['runPassport', 'isLoggedIn', 'ensureTotpOkIfEnabled'], fooAction: 'extra' } }; 

然而,问题在于, fooAction并没有inheritance*这种奇怪的政策。 结果只有extra政策才会被要求。 所以你的问题没有真正的解决办法。 你可以在这里https://github.com/balderdashy/sails/issues创build一个build议。