基于角色的访问控制 - 正确的MVC模式

Tam*_*Pap 7 php model-view-controller rbac kohana

半年前我开始使用MVC模式,我仍然有一些误解.

现在我想在我的应用程序中实现基于角色的访问控制.但是,我的问题不是关于RBAC,而是关于MVC.

我对RBAC的实现是这样的: user-> role-> permission, 因此每个用户(例如userA)可以有很多角色(例如阅读器,编辑器,管理员),并且每个角色都可以拥有许多权限(读取,更新,删除,等等.).

MySQL表

  • 用户(用户列表)
  • 角色(角色列表)
  • 权限(权限列表)
  • roles_permissions(角色列表 - >权限连接.例如编辑器 - >更新)
  • users_roles(用户列表 - >角色连接.例如用户A->编辑器)

现在我的问题是 我应该如何在MVC中实现它?有一个单独的模型:用户,角色,权限,roles_permissions,users_roles,而不是具有创建用户,角色,权限,roles_permissions和user_roles的authManager类?这种方式是否正确?有更好的,也许更优雅的方式吗?

mat*_*ino 8

基本上我会坚持使用许多现有的Kohana ACL库中的一个而不是自己编写(或者至少尝试一下它们是否符合您的需求).

您可能想要检查此线程(Wouter A1,A2和ACL模块) - http://forum.kohanaframework.org/discussion/1988/releases-a1-authentication-acl-acl-for-kohana-a2-object-level -authorization/p1
它不断更新和维护,也可用于3.2版本.

如果您觉得Wouter模块很复杂,您还可以检查Vendo ACL模块,它非常简单并且消除了很多复杂性 - https://github.com/vendo/acl
示例如何使用它 - http://forum.kohanaframework .ORG /讨论/ 9517 /工具入门与- VENDO-ACL/P1