简介
hapi-acl-auth-taglib 是一个基于 hapi 的权限控制插件,可以实现 REST API 的访问控制和用户权限管理的功能。本文主要介绍该插件的使用方法和源码分析。
安装
在项目目录下使用 npm 安装该插件:
$ npm install hapi-acl-auth-taglib --save
使用
在启动 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