如果你正在开发一个基于 SailsJS 的 Web 应用程序,并且需要对用户权限进行管理,那么你可以使用 @muhammadghazali/sails-permissions。它是一个已经封装好的 npm 包,可以帮助你轻松地实现完整的用户权限系统。 本文将为你详细讲解如何使用 @muhammadghazali/sails-permissions。
1. 安装并配置
在安装 @muhammadghazali/sails-permissions 之前,您需要确保在您的 Sails 项目中安装了 TypeScript。
npm install -g typescript
接下来,执行以下命令来安装 @muhammadghazali/sails-permissions:
npm install @muhammadghazali/sails-permissions
安装后,您需要在 Sails 应用程序中初始化 @muhammadghazali/sails-permissions。在 config/bootstrap.ts 文件中添加以下代码:
import { bootstrap } from '@muhammadghazali/sails-permissions'; export default async function(app: any) { await bootstrap(app, { ...options }); }
这将在启动 Sails 应用程序时初始化 @muhammadghazali/sails-permissions。请注意,这里的“选项”对象将是您在 Sails 应用程序中自定义配置的地方。您可以在该 npm 包的 GitHub 页面中找到所有可用选项的详细说明。
2. 添加角色和权限
在使用 @muhammadghazali/sails-permissions 之前,您需要定义用户角色以及每个角色可以执行的操作(即权限)。这可以通过以下两个步骤来完成:
2.1. 添加角色
您可以通过使用 Sails 中的“角色”模型来创建新角色。打开 api/models 文件夹,创建一个新文件名为 Role.ts,内容如下:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------------------- ------ - -------- ----------- -------------- ------- ---------- ---------- ---------- ------ - ---- ----------------------- ---------- -- ----- ------ ----- ---- ------- ----------- - ----------- -------------- ------- ---- ------- ----------------- ------- ------ ------- ----------- -- ----------- - --------- --------- -- ------------- ------------- ---------- ------- ----------- ----- ---------- ------- ----------- ----- -
这是一个标准的 Model 类,用于定义“角色”对象。您需要将其添加到 api/models/index.ts 文件中:
-- -------------------- ---- ------- ---- -------- ------ - --------- - ---- ----------------------- ------ - ---- - ---- --------- ------ - ---------- - ---- --------------- ------ ----- ------ - ------ ------------ ----- --- - -------------------- -- -------------- ----- ------ - ----------------- - ----------------------------- ------ ----- --------- - --- ----------- --------- ---------------- --------- ---------------- --------- ---------------- ----- ------------ ----- ------------ -------- ------ -------- --------------- ------- ------- ------- - ----------- ----- --------- ----- ------------ ----- -- --- ------ ----- -------- ------ - ----- ------------------------- ----- ---------------- ------ ---- --- -
2.2. 添加权限
接下来,您需要为每种角色定义可以执行的操作(即权限)。您可以通过使用 Sails 中的“权限”模型来完成。打开 api/models 文件夹,创建一个新文件名为 Permission.ts,内容如下:
-- -------------------- ---- ------- ------ - ----- - ---- --------------------------------------------------- ------ - ---------- ------- ---------- ----------- ----------- --------- - ---- ----------------------- ------ - ---- - ---- --------- ------ ----- ---------- ------- ----------------- - ----------- ------- ---- ------- ------- -------- ------- ------- --------- ------- -------------- -- ----- ------- --------- ------- ------------- -- ----- ------ ----- ---------- ------- ----------- ----- ---------- ------- ----------- ----- -
这也是一个标准的 Model 类,用于定义“权限”对象。您需要将其添加到 api/models/index.ts 文件中:
-- -------------------- ---- ------- ---- -------- ------ - --------- - ---- ----------------------- ------ - ---- - ---- --------- ------ - ---------- - ---- --------------- ------ ----- ------ - ------ ------------ ----- --- - -------------------- -- -------------- ----- ------ - ----------------- - ----------------------------- ------ ----- --------- - --- ----------- --------- ---------------- --------- ---------------- --------- ---------------- ----- ------------ ----- ------------ -------- ------ -------- --------------- ------- ------- ------- - ----------- ----- --------- ----- ------------ ----- -- --- ------ ----- -------- ------ - ----- ------------------------- ----- ---------------- ------ ---- --- -
3. 进行授权和认证
现在您已经定义了您的角色和权限,您需要在应用程序中进行授权和认证。启用 @muhammadghazali/sails-permissions 后授权和认证非常容易。让我们看一下如何完成此任务。
3.1. 启用认证
首先,在 Sails 应用程序的 config/security.ts 文件中启用 Sails 的认证策略。请将以下代码添加到该文件中:
module.exports.security = { ... policies: { '*': ['passport', 'sessionAuth', 'rolePermission'], ... } }
在这里,我们添加了一个名为“rolePermission”的策略。它将在用户登录后通过 @muhammadghazali/sails-permissions 进行验证,并且仅允许访问有权访问的页面。我们将在下面进一步讨论如何创建这个策略。
3.2. 创建认证策略
接下来,我们将创建“rolePermission”策略。在 config/policies.ts 文件中添加以下代码:
-- -------------------- ---- ------- ----------------------- - - ---- ----- --- ------------------ - ---- -------------- ------------ ----------------- -- --- --
在这里,我们设置了一个 Policy,将其应用于 AdminController 的 dashboard 操作。此策略将检查用户是否有权访问特定页面,如果是,则允许其访问。否则,将向用户显示错误消息。
3.3. 创建用户
现在,您需要创建一个具有角色的用户。您可以通过在 Sails 应用程序中的 config/bootstrap.ts 文件中添加以下代码来完成此操作:
-- -------------------- ---- ------- ------ - --------- - ---- ------------------------------------- ------ - ----------- ---------- - ---- ---------------------------------------------------------------- ------ ------- ----- ------------- ---- - ----- -------------- - ---------- --- ----- -------------------- ----- ------------------- -------------------- ----------- --------- -
这将创建一个名为“admin”的角色和一个名为“admin”的用户,并将其分配给“admin”角色。
4. 总结
现在,您已经知道如何使用 @muhammadghazali/sails-permissions 来安全授权和认证用户,并创建了“角色”和“权限”对象,以定义哪些权限可以分配给不同的用户角色。本文介绍了如何配置您的 Sails 应用程序,包括如何创建新的角色和权限。希望这篇文章能够帮助您学习 @muhammadghazali/sails-permissions 的使用。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066bcc967216659e2447f1