NPM 包 hapi-acl-auth-taglib 使用教程

简介

hapi-acl-auth-taglib 是一个基于 hapi 的权限控制插件,可以实现 REST API 的访问控制和用户权限管理的功能。本文主要介绍该插件的使用方法和源码分析。

安装

在项目目录下使用 npm 安装该插件:

- --- ------- -------------------- ------

使用

在启动 hapi 服务器之前,需要先注册该插件:

----- ---- - ----------------
----- ------ - --- --------------

----- ------- - -
  -
    ------- --------------------------------   -- ----
    -------- -
      ----------- -   -- ----
        ------ -
          ------ -------------- ---------------  -- ----- ---- ---------- - ----------- ---
          ------ --------------  -- ----- ---- ---------- ---
        -
      --
      ---------- -   -- --------
        ------------- ------   -- -- --- ----
        ------------ -------  -- ----- -----
      -
    -
  -
--

------------------------
  ----------- -- -  
    -- ----- -
      ----- ----
    -
  ---

在路由或处理程序中使用该插件,用它来实现访问控制和用户权限管理。

------ -
  ----- ---------
  ------- ------
  ------- -
    -------- --------- -- -- -
       -- ------------------------------ --- -------- -  -- ---------- ----- ----
         ------ ---------------   -- ------
       -
       ----- --- ------------- ---------  -- --------- ------
    --
    ----- -----   -- ------- --- ----
  -
-

源码分析

在充分了解上面的使用方法后,我们来看一下该插件的源代码实现。其中最主要的是对访问控制列表的处理,大致如下:

----- ------- - --------------------

----- ---------- -
  ----------------------- -
    ---------- - -----------------
    ------------ - --------------------
  -

  ------------ ------- -
    ---------------- - -------
    ------------ - --------------------
  -

  ----------- ----- --------- ------ -- -
    ----- ------ - --------------------------------------
    ----- ------ - -------------------
    ------ ------------------- --- -- -- ---------------------- --- ---
  -
-

其中,roles 是权限映射表,每个角色包含若干个权限;actions 是权限列表对象,使用 query-it 库将权限映射表转化为数组存储。

isAllowed 方法用来判断当前用户是否有权限访问某个路由。

另外,在该插件中,提供多种鉴权策略,这里以 JWT 鉴权为例进行一下简要介绍。JWT 鉴权的实现需要调用 hapi-auth-jwt2 插件,具体代码如下:

----- ------- - --------------------------

------------------------
  -------- -- -
    --------------------------- ------ -
      ---- ------------------  -- --- ----
      --------- ------------------ -------- -- -
        ----- ---- - -------------------------  -- -- -- ------
        -- ------- -
          ------ - -------- ----- --
        -

        ------ - -------- ----- ------------ ---- --
      -
    ---

    ---------------------------   -- --------
  ---

当然,该插件还提供了很多扩展和高级特性,如果需要更多实现细节,可查看项目源码和文档说明。

结论

hapi-acl-auth-taglib 是一款非常方便、易于使用的 node.js 权限控制框架,可以广泛应用于后端服务和 API 的访问控制和用户权限管理,也可以提供给前端界面组件的权限控制功能。在多人协作开发和权限管控方面有很大的作用,值得推荐。

来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60055eae81e8991b448dc331


猜你喜欢

  • npm 包 ngx-universal-state-transfer 使用教程

    在构建单页应用(SPA)时,前后端渲染(SSR)是一个流程较为复杂的过程。Angular 框架的开发者推荐使用 Universal 实现 SSR,这种方法需要在前后端之间传递渲染数据。

    2 年前
  • npm 包 papadima-ff-react-daterange-picker 使用教程

    前言 在前端开发中,经常需要处理日期相关的事件。因此,选择一个好用的日期选择器是非常重要的。其中,papadima-ff-react-daterange-picker 是一款优秀的 npm 包,可以帮...

    2 年前
  • npm 包 360-image-viewer 使用教程

    在前端开发中,有时需要展示 360 度全景图,以便让用户更好地了解场景或产品。而 360-image-viewer 是一个 NPM 包,可以轻松地实现 360 度全景图展示,操作简便,功能实用。

    2 年前
  • npm 包 generator-new-nextjs-app 使用教程

    什么是 generator-new-nextjs-app? generator-new-nextjs-app 是一个 npm 包,它能够快速地生成一个基于 Next.js 框架的 React 应用程序...

    2 年前
  • npm 包 mongoose-resource-router 使用教程

    什么是 mongoose-resource-router? mongoose-resource-router 是一个基于 express 和 mongoose 的 npm 包,用于快速创建 RESTf...

    2 年前
  • npm 包 @sweet-js/helpers 使用教程

    简介 @sweet-js/helpers 是 Sweet.js 的一个官方包,它包含了一些常见的语法宏模板,可以帮助我们更加方便地编写自定义的语法宏。 Sweet.js 是一种基于 JavaScrip...

    2 年前
  • npm 包 react-native-credit-card-input-form 使用教程

    在移动应用开发中,信用卡输入表单是一个常见的需求。react-native-credit-card-input-form 是一个基于 React Native 开发的 npm 包,提供了一个漂亮且易于...

    2 年前
  • NPM 包 @grial/utils 使用教程

    @grial/utils 是一个由 Grial 团队维护的 npm 包,它汇集了 Grial 前端开发中最常用的工具函数和组件。在本文中,我们将使用详细的步骤和示例代码教你如何在你的前端项目中使用 @...

    2 年前
  • npm 包 crscore 使用教程

    在前端开发中,有许多工具可以帮助我们更快速、高效地完成任务。其中一个重要的工具就是 npm。npm 是 Node.js 包管理器,拥有超过 1.5 亿个包,许多前端应用的构建和开发都是基于 npm 的...

    2 年前
  • npm包query-pruner使用教程

    在前端开发中,使用NPM包是非常常见的。其中一个常用的NPM包是query-pruner。本文将详细介绍该包的使用方法,并通过实际示例演示。 什么是query-pruner query-pruner是...

    2 年前
  • npm 包 ibird-docs 使用教程

    简介 ibird-docs 是一款基于 Node.js 平台的文档生成工具,能够快速生成漂亮、易读的文档,支持 Markdown 语法。同时,它还提供了丰富的插件和主题支持,可以根据项目需求自由定制。

    2 年前
  • NPM包underscore_selector使用教程

    简介 underscore_selector是基于underscore的JavaScript库,提供类似jQuery的选择器功能,可以方便地操作DOM元素和数据,包括查找、筛选、遍历、过滤等功能。

    2 年前
  • npm 包 csscomb-config-rawbot 使用教程

    什么是 csscomb-config-rawbot? csscomb-config-rawbot 是一个 npm 包,它是 csscomb 的配置文件,可以优化 CSS 代码的书写格式。

    2 年前
  • npm 包 pobox-regex 使用教程

    介绍 在前端开发过程中,有时我们需要对用户输入的邮箱进行验证,以保证数据的准确性和安全性。npm 包 pobox-regex 是一个专门用来验证电子邮件地址是否为“P.O. Box”地址的工具。

    2 年前
  • npm 包 @sergiogiogio/acdc 使用教程

    简介 @sergiogiogio/acdc 是一个用于前端开发的 npm 包,它提供了丰富的功能,可在开发过程中提高效率。本文将为读者讲解如何使用该 npm 包,以及如何在项目中进行集成。

    2 年前
  • npm 包 ejs-async 使用教程

    简介 ejs-async 是一个基于 EJS 模板引擎的 npm 包,可以用于在 Node.js 环境下渲染模板并返回渲染后的 HTML 内容。和原生的 EJS 包不同的是,ejs-async 支持异...

    2 年前
  • npm 包 disable-regexp-capture 使用教程

    在前端开发中,使用正则表达式是常见的一个技巧。正则表达式可以用于匹配字符串并进行相关操作。然而,我们在使用正则表达式时,经常会遇到一些问题,比如捕获字符。针对这个问题,我们可以使用 npm 包 dis...

    2 年前
  • npm包jsn-loader使用教程

    在前端开发中,我们经常会使用到各种npm包来提升开发效率和代码质量。其中,jsn-loader是一个非常实用的npm包,它可以帮助我们更加方便地使用JSON格式的数据。

    2 年前
  • npm 包 rxjs-endWith 使用教程

    前言 在日常前端开发中,我们常常需要对异步数据流进行操作。而 rxjs 是一个提供了操作异步数据流的库,它具有非常强大的功能和灵活的使用方式。而 rxjs-endWith 是一个在 rxjs 中非常有...

    2 年前
  • npm 包 laserscanner 使用教程

    简介 Laserscanner 是一款可用于前端项目的 npm 包,它提供了一种简单易用的方法来将一组数据转化成波形图形式,从而方便进行数据分析和可视化,通过 Laserscanner,用户可以快速而...

    2 年前

相关推荐

    暂无文章