我有使用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添加他们的角色。我正在查看文档,但我找不到任何相关内容。
感谢您的帮助!
答案 0 :(得分:0)
ACL不处理身份验证。 ACL中间件执行如下检查:
acl.isAllowed(req.session.userId, '/ourdogs', 'get')
要使其正常工作,您必须已填充 req.session.userId 。它将检查 req.method 的权限,因此您也必须分配此权限。