2012-03-27 41 views
5

我试图找出如何重定向到某个页面(这在我的情况是付款页面)是一个不是招用户的URL模式没有有效的订阅正在运行。Symfony2的:如何在特定页面上重定向当用户不允许访问

我知道我能做到这一点通过把我的一切行动isGranted检查,但我不喜欢这样的解决方案,因为它似乎是给予我的动作量时一个很大的浪费。

我查看了firewall.access_denied_url参数,但我不想将AccessDenied链接到付款页面,因为,例如,管理页面访问被拒绝给任何没有ROLE_ADMIN的用户,重定向到付款页面没有任何意义。

我已经有一个选民检查用户是否有效,并在这种情况下授予访问权限,但是当用户尝试访问某个特定模式并重定向他/她时,如何设法使用此选民访问被拒绝?

在此先感谢!

回答

1

您可以使用JMSAopBundle

从技术文档:

这束增加了AOP功能Symfony2的。

如果你还没有听说过AOP,它基本上允许你将一个横切关注点(例如安全检查)分成一个专门的类,而不必在它所在的所有地方重复该代码需要。

换句话说,这可以让你之前执行自定义代码,并在你的服务层,或你的控制器某些方法调用之后。您也可以选择跳过原始方法的调用,或者抛出异常。

+1

为什么你不能使用控制器上监听一个简单的? – meze 2012-04-04 07:13:53

+1

我想这束通过监听器,它的工作。当然,你可以通过听众自己做到这一点。 – 2012-04-04 08:01:32

6

在应用程序/配置/ security.yml下添加安全:

access_denied_url:/富/ error403

的Symfony将然后重定向该用户不能访问/富/ error403所有页面。

+1

更正,它会转发(内部子请求) – 2014-05-22 10:55:00

相关问题