发布于 2026-01-06 2 阅读
0

访问控制?搞定了。以下是我构建DMS的方法🌠

访问控制?搞定了。以下是我构建DMS的方法🌠

这是Permit.io 授权挑战赛:权限重新定义 的参赛作品。

我建造的

您好!👋
向您介绍“ Radhika's DocManager ”:一个由 Permit.io 提供支持的、具有细粒度授权的安全文档管理系统(或 DMS)。

标识

这是 Radhika 的 DocManager 的第一个版本,它允许您根据文档的角色和所有权来创建、读取、写入和删除文档。

特征

  • 基于角色的访问控制 (RBAC):不同角色(管理员、编辑者、查看者)拥有不同的权限。
  • 基于属性的访问控制(ABAC):文档所有者拥有特殊权限
  • 细粒度授权:使用 Permit.io 实现复杂的授权规则
  • Next.js 应用路由:带有服务器组件和服务器操作的现代 React 应用
  • 响应式 UI:使用 Tailwind CSS 和 shadcn/ui 组件

授权模型

该应用程序实现了以下授权模型:

  • 管理员:可以创建、查看、编辑和删除任何文档,并访问管理面板。
  • 编辑者:可以创建、查看和编辑文档,也可以删除自己的文档。
  • 查看器:仅可查看文档

此外,无论角色如何,文档所有者都对其自己的文档拥有完全控制权。

 

演示

 

项目仓库

https://github.com/RS-labhub/Document_Management_System
 

我的旅程

创建文档管理系统(DMS)是一项非常繁琐的工作,尤其是在编写访问控制规则时。幸亏有了 Permit 模块,它简化了流程,大大节省了时间。

本应用的重点在于“权限的使用”。这也证明了通过添加访问控制,一个简单的应用程序可以变得非常强大。

总之,这个项目是开源的。如果您想贡献力量,我们非常欢迎。

 

使用 Permit.io 进行授权

许可使用

我使用Permit实现了两个目标:

  • 基于角色的访问控制(RBAC)
  • 基于属性的访问控制(ABAC)

在基于角色的访问控制(RBAC)策略中,创建了3个角色:管理员、编辑者和查看者。每个角色的属性/权限在图中已列出。

在基于属性的访问控制策略中,访问权限由文档属性和用户上下文决定。

如果您想查看许可证的完整实现,请阅读项目自述文件!

 

结论

非常感谢@jennie_py对本项目做出的贡献!

本项目演示了如何使用 Permit.io 在 Next.js 应用程序中实现细粒度授权。通过将授权外部化,我们可以创建更安全、更易于维护且更灵活的应用程序。

感谢您阅读至此!您的支持对我们意义非凡。❣️

文章来源:https://dev.to/rohan_sharma/access-control-handled-heres-how-i-built-my-dms-212