Symfony2检查记录的用户属性,当前路由和重定向

时间:2013-02-15 15:02:16

标签: symfony listeners

我正在寻找最好的地方来检查记录的用户是否具有特定属性并检查当前路由是什么。基于此,我想将用户重定向到特定路线。

我的用户扩展了Sonata用户,并有额外的方法,如:

class User extends BaseUser
{
    /**
     * @return boolean
     */
    public function hasProperty()
    {
        ...

此外,我有一条路线:

route_a:
    pattern: /a
route_b:
    pattern: /b

以及如果:

if ($user->hasProperty() && $currentRoute == 'route_a') {
    redirectTo('route_b');
}
if (!$user->hasProperty() && $currentRoute != 'route_a') {
    redirectTo('route_a');
}

我试图在监听器中为kernel.controller事件做这件事,在这个监听器中我调用了类似init()控制器方法的东西,我把这个逻辑放在这个方法中。它工作正常,但我不能重定向响应。

这种逻辑的最佳位置是什么?

1 个答案:

答案 0 :(得分:0)

您是否尝试过此解决方案:Redirect if the user is logged in

您必须在Bundle中创建一个Listener类,并将此侦听器定义为服务。