我想为Symfony 1.4项目中的不同角色提供指定的操作。
项目包含几个数据库表,其值只能由某些角色修改。
例如,管理员可以访问所有模型的 CRUD。另一个角色(让它成为顾问)只能从指定的模型(不是全部)中检索(而不是修改或删除)结果。
如何在 symfony 中支持这样的功能?我假设将提前指定项目的角色。
我正在考虑的一个解决方案是分别为每个角色创建模块和操作(crud 面板 + 一个日志界面),但这听起来像是一项艰巨的工作。
只是想知道更聪明的方法是什么。
我想为Symfony 1.4项目中的不同角色提供指定的操作。
项目包含几个数据库表,其值只能由某些角色修改。
例如,管理员可以访问所有模型的 CRUD。另一个角色(让它成为顾问)只能从指定的模型(不是全部)中检索(而不是修改或删除)结果。
如何在 symfony 中支持这样的功能?我假设将提前指定项目的角色。
我正在考虑的一个解决方案是分别为每个角色创建模块和操作(crud 面板 + 一个日志界面),但这听起来像是一项艰巨的工作。
只是想知道更聪明的方法是什么。
我认为实现这一目标的最佳方法绝对是凭证(适用于 sf1.2,但适用于 1.4)。
我建议您使用sfGuardDoctrine来使用一些具有相关权限(即凭据)的组。您定义了一个组admin、advisor等。您关联了一些凭据,例如modifiy、remove、create、edit等。
然后,每次用户登录时,它都会自动具有定义的凭据(与他或他的组相关联)。
之后,您必须检查用户是否可以执行每个操作:
if($this->getUser()->hasCredential('modify'))
{
// authorized action
}
这是sfGuard 的更多文档(与 sf1.0 相关,但最好了解它的工作原理)。