ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Ink-wash-docs水墨文档三级访问权限机制详解:公开、团队、私密密码防护全指南

2026/8/27 17:31:22 拓冰建站 浏览量
Ink-wash-docs水墨文档三级访问权限机制详解:公开、团队、私密密码防护全指南 Ink-wash-docs水墨文档三级访问权限机制详解公开、团队、私密密码防护全指南【免费下载链接】Ink-wash-docs水墨文档一款基于eggvue开发的在线文档管理平台支持markdown文档 excel文档原型托管等功能. http://139.199.172.193:7001/项目地址: https://gitcode.com/gh_mirrors/in/Ink-wash-docs水墨文档Ink-wash-docs是一款基于 Egg Vue 的开源在线文档管理平台它的核心亮点之一就是内置的三级访问权限机制公开、团队、私密密码三种模式覆盖从「全员可见」到「仅凭密码解锁」的全部防护场景。这篇指南带你看懂它的权限逻辑、设置步骤与前后端实现3 分钟即可上手。一图看懂三级权限模式对比模式visitType值谁能访问需要登录适用场景 公开open所有用户否接口文档、帮助手册 团队team作者 协作人 授权成员是内部技术文档、需求方案 私密private仅凭访问密码是敏感数据、保密方案权限字段定义在文档数据模型 app/model/document.js 中visitType记录访问方式默认值teamvisitPass存储私密密码。也就是说每篇文档创建出来时默认就是团队模式——只有作者自己能看安全兜底从第一天就开始生效。公开模式让文档自由传播选择公开后服务层只需一行更新即可生效见app/service/document.js的setDocumentOpen方法// app/service/document.js —— setDocumentOpen return await ctx.model.Document.findByIdAndUpdate( documentId, {$set: {visitType: open}} );权限校验发生在读取文档详情时getDocumentDetail方法只要visitType open任何人都能直接阅读连登录都不需要。适合把 API 说明、使用教程分享给外部用户。 提示公开 ≠ 可编辑。无论哪种模式编辑权始终只属于作者这一点在后端由editPermission单独控制不用担心文档被乱改。团队模式授权给「对的人」团队模式是日常协作的主力。打开「访问设置」对话框前端组件位于 web/components/share-setting/index.vue支持两种授权方式按团队/小组添加单选先在工作台创建用户分组逻辑在app/service/userGroup.js一次拉入整组成员按人员搜索添加多选输入用户名远程搜索精准邀请。后端校验逻辑非常清晰app/service/document.js中// 阅读权限open 所有人可见team 需是成员/协作人/作者 let readPermission documentData.visitType open || (documentData.visitType team ([...documentData.members, ...documentData.cooperation_user, documentData.author] .includes(userData._id)));也就是说作者、协作人、被授权成员三类人都能查看团队文档不在名单里的用户访问时页面会弹出「无访问权限该文档只对团队内部可见」的提示对应组件 web/components/need-permission-tips/index.vue。私密模式 访问密码最后一道防线私密模式的思路是「不认人只认密码」设置端在访问设置中选择「私密」输入访问密码setDocumentPrivate方法会把visitType: private和visitPass一起写入文档校验端checkDocumentPassword方法将用户提交的密码与visitPass比对正确才放行体验端前端文档预览页web/pages/docs-view/index.vue检测到私密文档后会展示「该文档为私密文档请输入密码」的输入框输错不显示任何内容。这种模式特别适合「不想建账号、但需要控制知悉范围」的场景——把密码发给对方即可改密码 立即收回权限灵活又干脆。3 步完成设置带你看一遍真实操作打开「访问设置」在文档列表中点击权限图标弹出 600px 宽的设置对话框顶部是 公开 / 团队 / 私密 三个单选按钮选择模式并配置选「公开」→ 提示访问方式设为公开所有人都能访问该文档选「团队」→ 通过分组或搜索添加成员已加入成员以标签形式展示点 × 即可移除对应接口removeCooperationUser选「私密」→ 在「访问密码」输入框填写密码勾选「应用到目录下的所有文档」点击确定后后端会递归遍历子级findChildrenListById把同样的权限同步到整个目录——一次操作全目录生效非常省心。相关接口统一收敛在 app/controller/document.jssetDocumentOpen/setDocumentVisitTeam/setDocumentPrivate/checkDocumentPassword命名直观方便二次开发。权限体系如何被完整执行权限不只是前端藏一藏而是贯穿请求全链路身份认证每个请求先经过 app/middleware/auth.js 中间件校验Bearer Token无效直接返回 401——团队/私密模式的身份判断以此为基础数据过滤文档列表查询时会按当前用户过滤无权限的文档根本不出现在列表里getDocumentList中的isShow判断详情拦截即便直接访问文档 URLgetDocumentDetail返回的authority结构也会明确给出needLogin / read / edit三个布尔位前端据此渲染或拦截。三层防线叠加让「公开、团队、私密」的边界真正可靠。常见问题FAQQ1新建的文档为什么别人看不到A新文档默认visitType: team且成员只有作者。想让团队可见记得去访问设置里添加成员。Q2移除协作人后对方还能看吗A不能。权限是实时校验的$pull操作一旦执行下一次访问即被拦截。Q3私密文档忘填密码会怎样AvisitPass为空时任何非空密码都会校验失败相当于文档对所有人包括误访问者关闭仅作者可正常阅读。Q4能基于它做企业部署吗A可以。项目结构清晰app/后端 web/前端权限逻辑集中在 Service 层结合 MongoDB 即可完成私有化部署详见 README.md。写在最后水墨文档的三级权限设计看似简单实则踩中了文档平台安全设计的三个关键点默认安全新建即团队模式、最小授权编辑权仅限作者、灵活防护密码即权限。如果你正在寻找一个轻量、可私有部署、权限清晰的开源文档方案这套机制值得直接借鉴 ✍️【免费下载链接】Ink-wash-docs水墨文档一款基于eggvue开发的在线文档管理平台支持markdown文档 excel文档原型托管等功能. http://139.199.172.193:7001/项目地址: https://gitcode.com/gh_mirrors/in/Ink-wash-docs创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考