风帆政策 – 使用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议。