如何检查Symfony中不同路由组的用户属性是否为某个值?

时间:2018-08-12 18:17:26

标签: php symfony security symfony-3.4

系统:

用户绑定到公司。公司拥有许可证。许可证有2个到期日期。 expirationBasic和expirationExtended。

我想要什么: 对于50条路线,我想检查已登录用户的公司的许可证现在是否具有expirationExtended>。

对于50条路线,我现在要检查已登录用户的公司的许可证是否具有expirationBasic>。

我正在使用symfony 3.4

1 个答案:

答案 0 :(得分:0)

这个问题缺少细节,例如您希望系统在检查失败时执行的操作。至少有两种常见的方法来处理此问题。

“ Symfonic”方式是添加一个event filter。创建一个扩展EventSubscriberInterface的新类,并将其放在您的EventSubscriber目录/名称空间中。触发适当的事件后,您的方法可以执行检查并抛出和AccessDeniedHttpException

假设您的50条路线通向多个控制器,另一种解决方案是编写一个抽象控制器类,该类设置为最终控制器的父级。然后,该基类可以针对已登录的用户执行检查。