2012-07-11 109 views
1

我需要实现事件监听器来验证用户是否有访问客户端项目的权限。Symfony2:页面事件监听器

我的路线是这样的:

/client_a/dashboard/ 
/client_b/dashboard/ 

用户可能只具有访问权限的“客户A”,所以我需要验证和重定向用户,如果他/她是不允许看到,项目。

页面事件侦听器是最好的方法吗?如果是这样,我会听什么事件?

或者,如果有更好的方法来处理场景,那会是什么样子?

感谢,

JB

回答

2

还有一个很多使用Symfony2提供的本机ACL功能来做到这一点的更好方法。 This "book" entry will explain it pretty clearly.

+0

感谢大家的意见。我很早就看到了ACL功能,但我不清楚上述场景的实现。你能详细说明一下吗?谢谢! – jbsound 2012-07-12 01:11:00

+0

当然。对每个客户端(我假设每个客户端都有一个类)适用ACL权限(只读,读写[或更简单的模型])。然后,您可以访问安全上下文来检查权限,而不是在client_x路由上设置整个服务:'if($ securityContext-> isGranted('READ',$ clientObject))' – Lusitanian 2012-07-12 01:28:20

0

假设/client_X/dashboard/是不是你想要确保只有路线,你可以监听kernel.requestevent

你的监听器可能需要注入安全上下文服务,所以你可以访问用户的信息。然后,您只需检查用户是否有权访问某个客户端并作出相应的反应。

+0

感谢@Arms,这证实了我的想法,但想确保它是最好的方法。我已经有了用于认证和授权的安全上下文,所以我们应该很好。 感谢您加入并给予反馈! – jbsound 2012-07-11 20:17:09