如何将ACL节点js角色与来自数据库MySQL的用户连接(sequelize)

时间:2017-01-10 16:17:39

标签: mysql node.js sequelize.js acl node-acl

我有使用Sequelize创建的MySQL数据库。现在我想通过节点acl为该数据库的用户提供角色。 这是我的acl.js文件:

var acl = require('acl');
var aclSeq = require('acl-sequelize');
var sequelize = require('../models/index.js');

//acl
acl = new acl(new aclSeq(sequelize.connection, { prefix: 'acl_' })); 

acl.addUserRoles(4, 'admin');

acl.allow('admin', 'ourdogs', 'view')

module.exports = acl;

问题是它创建了新的数据库acl_roles和acl_users,但我想从我现有的数据库“user”连接用户

id, username, email, password_digest, firstName, lastName, image, EmployeeId (columns)
'4', 'admin', 'admin@admin.com', 'a', 'Admin', NULL,    'http://interworldgems.com/client_login/admin/images/login_icon.png', NULL

之后调用此方法,只允许管理员

  app.get('/ourdogs', acl.middleware(), function(req, res) {
    models.Dog.findAll().then(function(dogs) {
      res.render('ourdogs/ourdogs', { 
        title: 'Our dogs', 
        dogs: dogs 
      });
    })
  });

通过运行此代码,ACL会创建这些数据库

“acl_roles”

key, value (columns)
admin, [4]

“acl_users”

key, value (columns)
4, ["admin"]

我知道我的acl.js代码不正确,但我不知道如何从我的数据库连接用户,然后用acl添加他们的角色。我正在查看文档,但我找不到任何相关内容。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

ACL不处理身份验证。 ACL中间件执行如下检查:

acl.isAllowed(req.session.userId, '/ourdogs', 'get')

要使其正常工作,您必须已填充 req.session.userId 。它将检查 req.method 的权限,因此您也必须分配此权限。