我在制定风帆政策方面遇到了麻烦,我按照教程进行操作,但仍无法使其发挥作用。
在我的policies.js文件中:
module.exports.policies = {
'*':true,
UsersController:{
'*':false,
signIn: 'skipAuthenticated'
}
}
在我的authenticated.js文件中:
module.exports = function skipAuthenticated(req, res, ok){
console.log("testing");
if (req.session.authenticated){
console.log("testing");
return ok();
}
else {
return res.send("You are not permitted to perform this action.", 403);
}
}
但该政策并未触发。任何帮助都会非常感激。
答案 0 :(得分:3)
假设您有ProductsController和LoginController。
在policies.js中:
module.exports.policies = {
'*': true,
login: {
'*': true
},
products: {
'*': 'isAuth',
feed: true
}
}
在上面的例子中:
任何人都可以访问“登录”控制器内的操作。但是,在产品控制器中,除“feed”之外的任何其他操作都需要通过“isAuth”策略。
答案 1 :(得分:2)
如果您查看名为如何使用策略保护我的控制器?的部分,它描述的策略名称与 api / policies 。所以你的问题是实际的策略名称是“authenticated”(你说authenticated.js),你试图在ACL中使用的策略名称是“skipAuthenticated。”
因此,您可以将策略文件名更改为skipAuthenticated.js,也可以更改ACL以反映实际的策略名称。
http://sailsjs.org/#!documentation/policies
您可以将一个或多个策略应用于给定的控制器或操作。 / policies文件夹中的任何文件(例如authenticated.js)都可以通过其文件名减去扩展名(例如'authenticated')在ACL(config / policies.js)中引用。
答案 2 :(得分:1)
查看我完成的要点。它应该与使用passportjs和mysql的Sails 0.98一起使用 https://gist.github.com/anhnt/8297229
答案 3 :(得分:0)
我猜测文件名错误尝试将authenticated.js重命名为skipAuthenticated.js,如果这无助于删除camelcase名称...我有一些问题与camelcase但不记得是否与政策< / p>