简介
permission-core 是面向 MonSQLize 3.1 Node.js 应用的细粒度授权库,将持久化 RBAC 管理与接口、菜单、API、数据行和字段的运行时检查统一起来。
模块负责什么
- 带租户范围的角色、单父角色继承和用户直接角色绑定
- 基于类型化
action + resource的 allow 与 deny 规则 - 菜单节点、接口绑定、角色菜单授权、修订和审计记录
- 用户决策、解释、可见菜单投影和授权集合
- 可选的语义缓存,底层复用宿主 MonSQLize 缓存
每次管理写入都通过 MonSQLize 事务持久化,并返回修订与审计证据。必要的 scope、策略上下文、数据库状态或来源完整性不可用时,运行时默认拒绝。
宿主负责什么
应用仍然负责认证、请求身份、密钥、MonSQLize 连接、业务集合、HTTP 错误序列化和运维策略。宿主必须构造可信的 PermissionSubject;模块不会自动信任任意租户或用户请求头。
permission-core 不是身份提供方、登录模块、ORM、API 网关,也不是只在前端隐藏菜单的工具。
四层能力怎样选择
先完成核心 RBAC,再按业务需要增加其他层。菜单权限不会代替后端接口判断,数据权限也不要求先使用菜单模块。
对象怎样协作
scope() 与 forSubject() 都是同步创建 facade,不查询数据库;真正的读取发生在后续管理/判定方法。后台管理请求建议在 scope(scope, defaults) 里一次绑定 actorId/requestId,普通写入就不需要反复传审计人或手写幂等键。逐参数说明见核心与上下文 API。
运行模型
文字等价说明。宿主把已认证身份转换成带完整 scope 的 `PermissionSubject`。permission-core 在该范围内解析角色和有效 allow/deny 规则,再用同一份授权状态处理路由与接口判定、可见菜单和按钮,以及受授权保护的 Mongo 集合操作。
scope 至少包含 tenantId,还可以包含 appId、moduleId 或 namespace。另一个 scope 可以使用相同 userId 和 roleId,但不会共享绑定或规则。
支持边界
选择下一项任务
不熟悉 scope、subject、直接与有效的区别时,先读核心术语与心智模型。然后完成快速开始与管理角色与用户授权。核心已经运行时,再继续处理权限检查、数据权限或菜单管理。