我正在使用symfony2,我需要将我网站的所有功能分成组,一个商店只能使用一个功能,当该功能的组由商店拥有时,用例很简单,但是当我尝试设计一种方法来做到这一点,我发现它是非常讨厌的。我最初的想法是在每个动作中检查一个组是否属于商店,实际上,每个动作都是一个功能,这意味着我必须为所有动作标记一个组,这个设计需要一个巨大的工作,你有一个更好的想法?我搜索了很多,但没有找到任何捆绑,或者像这样的任何资源,似乎这个用例非常有优势。
答案 0 :(得分:1)
如果我已经很好地理解了您的问题,您需要对特定操作或一组操作进行基于角色的访问。因此,您可以开始为每组操作创建一个控制器,并使用标识相对集的前缀。
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\Method;
/**
* @Route("/store")
*/
class StoreController extends Controller
{
/**
* @Route("/foo/{bar}")
* @Method({"GET", "POST"})
*/
public function fooAction($bar) { }
}
现在您需要enable the access control来获取某些路线。举个例子:
#app/config/security.yml
security:
# ...
firewalls:
# ...
default:
# ...
access_control:
# require ROLE_STORE for /store*
- { path: ^/store, roles: ROLE_STORE }