我正在考虑实现条件许可的最佳方式,即用户和团队是m-to-m。但是每个团队也与用户表有一对一的“领导者”关系。Symfony/sfDoctrineGuard有条件许可
为了简单起见,假设我们有两个权限级别“用户”和“管理员”。然后可以说,只有某些团队管理任务,即群组电子邮件,只能由该团队的领导发送。
目前,每个针对团队领导者的操作都会查询数据库,以检查当前用户是团队领导者(记住用户可能会领导多个团队)。我个人不喜欢看到“if($ user-> isLeader($ team))”到处都是。
我已经考虑设置用户在登录用户会话(ala phpBB)时使用的团队列表,或者使用symfony过滤器来执行相同的操作。
但是,在第一种方法中,如果其他用户可能会更改团队的领导者,则数据可能会过时。第二种方法需要对每个页面加载额外的数据库查询。
有什么更好的点子? 注意:在一个项目中有多个应用程序需要共享相同的权限模型(即后端和api)
这非常接近我所追求的。 我可能会使用memcache实现类似的解决方案。 – xzyfer 2010-09-14 11:29:57