Symfony2:当不允许用户访问url模式时,如何在特定页面上重定向

时间:2012-03-27 13:07:21

标签: symfony authorization firewall fosuserbundle

我正在尝试弄清楚如何重定向到某个页面(在我的情况下是支付页面),这个用户没有正在运行的有效订阅。

我知道我可以通过对所有操作进行isGranted检查来做到这一点,但我不喜欢这个解决方案,因为考虑到我的行动量,这似乎是浪费时间。

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

我已经有一个投票人检查用户是否有效并在这种情况下授予访问权限,但是当用户尝试达到某种模式并且当他/她重定向时,我怎么能设法使用这个选民?访问被拒绝?

提前致谢!

2 个答案:

答案 0 :(得分:6)

在app / config / security.yml中添加安全性:

access_denied_url:/ foo / error403

然后,Symfony会将用户无法访问的所有页面重定向到/ foo / error403页面。

答案 1 :(得分:1)

您可以使用JMSAopBundle

来自文档:

  

此捆绑包为Symfony2添加了AOP功能。

     

如果您还没有听说过AOP,它基本上允许您将交叉问题(例如,安全检查)分成专用类,而不必在需要的所有地方重复该代码

     

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