在登录过程中创建导航 - FOSUserBUndle - Symfony

时间:2017-10-23 14:58:25

标签: symfony fosuserbundle

我需要你的帮助。

我想在登录过程中构建我的导航并将其存储在会话中。就像那样,我的导航只加载一次,而不是每次都加载。

为什么?因为我需要使用我当前用户记录的链接(ROLE)来构建导航

事实上,我不知道如何在登录过程中访问用户,这是一个覆盖SecurityController的loginAction,就像这个...

<?php

namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Session\Session;

class SecurityController extends \FOS\UserBundle\Controller\SecurityController
{
    public function loginAction(Request $request)
    {
        $response = parent::loginAction($request);

        $session = $request->getSession();

        /////////////////////////////////////////////////////////////
        //GET THE USER FROM $RESPONSE AND BUILD THE NAV WITH HIS ROLES IN A SESSION
        /////////////////////////////////////////////////////////////



        return  $response;// TODO: Change the autogenerated stub
    }

    public function logoutAction()
    {
        $request = $this->getRequest();
        $session = $request->getSession();
        $session->clear();
        parent::logoutAction(); // TODO: Change the autogenerated stub
    }
}

1 个答案:

答案 0 :(得分:0)

通常情况下,您可以从服务中动态创建菜单,注入TokenStorageInterfaceAuthorizationCheckerInterface或其他一些机制(例如3.4+添加更简单的安全服务),以便获取{ {1}}实体,然后从那里检查角色或其他服务

User

从大型会话商店中的数据处理和重建菜单可能至少与普通的KNPMenuBuilder服务一样复杂。