创建用户角色

时间:2010-11-24 09:40:35

标签: php mysql symfony1 entity-attribute-value

我正在symfony1.4中做新项目。现在,该项目要求用户登录和浏览,并且此类型的任何项目都需要一种基于角色限制用户的方法。 我不想以明显的方式实现这一点,即为每个用户提供角色属性并具有预定义的角色并将这些角色分配给用户。这个问题是它不是很灵活,因为稍后会定义更多的角色。

我在想这里使用EAV模型,(不确定我能在symfony中做到这一点)。你们想的是,你有什么更好的建议可以让用户角色在添加或删除时更加灵活。

此外,根据用户角色显示页面的最佳方式是什么,因为我希望根据角色隐藏一些元素。我应该比较每个页面中的角色并隐藏每个页面上的元素吗?有更好的解决方案吗?

请详细说明这些。

由于

1 个答案:

答案 0 :(得分:2)

sfDoctrineGuard插件(http://www.symfony-project.org/plugins/sfDoctrineGuardPlugin)是处理用户身份验证,组和凭据的一种非常全面的方式。用户可以单独或作为一组设置权限,并且可以根据这些权限限制对特定页面部分或整个操作的访问。您可以在控制器代码本身中设置新的用户凭据,例如

<?php
$this->getUser()->setCredential('editor');
?>

并验证用户在视图中具有特定权限:

<?php
if ($sf_user->hasCredential('editor')) {
  // stuff only for editors
}
?>

这个页面有很多关于插件的额外信息 - 自述文件没有涵盖 - http://trac.symfony-project.org/wiki/sfGuardPluginExtraDocumentation(尽管它指的是Propel而不是Doctrine)。以下系列简短教程非常有用:

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-installation

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-administration

http://www.finalconcept.com.au/article/view/symfony-user-management-sfdoctrineguard-securing-actions

关于用户的Symfony教程页面:

http://www.symfony-project.org/jobeet/1_4/Doctrine/en/13