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

阅读时长 5 分钟读完

简介

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

纠错
反馈