访问控制?搞定了。以下是我构建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

