Sailsjs政策

时间:2013-10-07 03:40:05

标签: node.js security sails.js policies

我在制定风帆政策方面遇到了麻烦,我按照教程进行操作,但仍无法使其发挥作用。

在我的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);
  }
}

但该政策并未触发。任何帮助都会非常感激。

4 个答案:

答案 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>