2010-11-24 133 views
1

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

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

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

请阐明这些。

感谢

回答

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(虽然它是指推进而比教条)。另外,下面的一系列简短教程是非常有用的:

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

+1

一致认为sfDoctrineGuradPlugin是可能是要走的路。这里唯一的问题是真正的凭据缓存,可以修复。 – 2010-11-24 15:28:36