将node_acl模块与SailsJs集成

时间:2016-01-25 10:23:39

标签: node.js express sails.js middleware sails-mongo

我尝试使用sails js实现基于角色的身份验证并使用node_acl中间件。以前有人试过吗?我从acl文档中看到的是

//Using the mongodb backend acl = new acl(new acl.mongodbBackend(dbInstance, prefix));

如何从SailsJs

获取dbInstance对象

1 个答案:

答案 0 :(得分:0)

我只是在尝试相同的事情(不确定其中的优点),我设法使用MongoDB驱动程序进行连接。

你必须

npm install mongodb --save

然后,假设您的config/connections.js中包含以下适配器信息:

  MyMongo: {
    adapter: 'sails-mongo',
    host: 'localhost', // defaults to `localhost` if omitted
    port: 27017, // defaults to 27017 if omitted
    user: '', // or omit if not relevant
    password: '', // or omit if not relevant
    database: 'someDB' // or omit if not relevant
  },

您现在可以执行以下操作:

var node_acl = require('acl');
var MongoClient = require('mongodb').MongoClient;

var dbInstance = "mongodb://"+sails.config.connections.MyMongo.host+":"+
      sails.config.connections.MyMongo.port+"/"+sails.config.connections.MyMongo.database;

MongoClient.connect(dbInstance, function(error, db) {
   //check for errors...

   var mongoBackend = new node_acl.mongodbBackend(db, 'acl_');
   var acl = new node_acl( mongoBackend );

   acl.allow('role', 'model', 'action'); // Now you can do this...
}

我希望这会有所帮助。请注意,我添加了acl_前缀,因此ACL生成的所有集合都可以从带有风帆的模型使用的其他集合中识别出来。