简介
sails-permissions-sequelize是一个Node.js的npm包,允许您将访问控制列表(ACL)应用于您的Sails.js应用程序中的所有动作,从而为用户和组提供更细粒度的权限和角色,同时仍允许他们成为您的Sails.js应用程序中的注册用户。
本文将详细介绍如何使用sails-permissions-sequelize npm包实现访问控制列表(ACL)。
安装
在使用sails-permissions-sequelize时,需要先安装Sails.js和Sequelize。
npm install sails npm install sequelize sequelize-cli --save
安装完成后,运行以下命令来安装npm包
npm install sails-permissions-sequelize --save
配置
一旦安装了sails-permissions-sequelize,您需要将其添加到Sails.js应用程序的配置中。首先,创建一个名为config/permissions.js的文件,并在其中添加以下内容:
-- -------------------- ---- ------- -------------------------- - - ----- - ------ - ------------ ---- ------ - ---- ---- - - -- ------ - ------- - ----------- - ---- --------- - - - --
在这个类中,我们定义了两个属性:role
和model
。role
属性用于定义用户的角色,model
属性用于定义ACL。
我们定义了一个 admin
角色,该角色具有“*”权限并可以添加用户。
我们还定义了一个“user”模型,并为其添加了一个通配符“*”,表示我们正在为所有属性添加权限。此外,我们还将admin
角色分配给user
模型中的所有属性。
默认情况下,Sails.js仅将“GET”请求限制为“所有连接”。如果您需要将其他HTTP方法包括在您的ACL中,则应在 config/policies.js
文件中添加它们,例如:
-- -------------------- ---- ------- ----------------------- - - ---- --------------------------- --------- - ---- ----- -- -------------- - ------- ---------------------------------- -- ------------- - ---- ---- -- ------- - ------ ----------------------------------- ------ ----------------------------------- --------- ---------------------------------- - --
在这个类中,我们指定了许可策略,它们一个一个地与模型中的action绑定。例如,我们没有授予“user/create”模型的任何用户任何访问权限,而我们授予了“POST”方法的“admin”角色访问“user/create”模型的权限。
使用
完成配置后,您可以通过进一步定义用户和角色,并从这些角色指定受保护的属性来使用ACL。
您可以通过 Sails.js信任的任何身份验证策略注册用户(如Sails.js默认的 Passport ),并将其指定为其中一个角色。
const user = await User.create({email: 'dev@dev.com', password: '123456'}); const role = await Role.findOne({ name: 'admin' }); await user.setRoles(role.id);
如上所述,我们创建了一个名为admin
的角色和一个名为user
的用户,然后setRoles
函数将用户与角色关联。
在启用访问控制之前,我们还需要检查用户是否有权处理该请求。以下示例演示如何在执行要保护的操作之前检查用户是否具有访问权限。
-- -------------------- ---- ------- --- ----- ---- - ----- -------------- ----- ------- --- ----- ----------------------- ----- ------- - ----- -------------------- ------------ ----- ----------- - --------------------------------- ---------- --------------------- -- ------------- - --- -- -- --------- ------ - ---- - ------ ---------------- -- -- ------------ ------ ------- - ---
在这个例子中,我们检查是否给定了某个用户是否代表“admin”角色以及受保护的“article”模型中的“更新”操作。
总结
sails-permissions-sequelize npm包是使用Sails.js和Sequelize的API实现的一种用户和角色权限控制方案。通过配置和使用,我们可以为我们的Web应用程序添加安全性和控制权限。过程繁琐,但实践中确实很有用。希望本文介绍的sails-permissions-sequelize包能够帮助您了解如何实现ACL,以便在未来您能够更好地为您的应用程序增加安全性和控制权限。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/600551c081e8991b448cf1f8