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

Gil*_*das 6 firewall authorization symfony fosuserbundle

我正在试图找出如何重定向到某个页面(在我的情况下是支付页面)一个没有运行有效订阅的用户.

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

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

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

提前致谢!

小智 6

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

access_denied_url:/ foo/error403

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


Hak*_*yal 1

您可以使用JMSAopBundle

来自文档:

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

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

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