我需要你的帮助。
我想在登录过程中构建我的导航并将其存储在会话中。就像那样,我的导航只加载一次,而不是每次都加载。
为什么?因为我需要使用我当前用户记录的链接(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
}
}
答案 0 :(得分:0)
通常情况下,您可以从服务中动态创建菜单,注入TokenStorageInterface
和AuthorizationCheckerInterface
或其他一些机制(例如3.4+添加更简单的安全服务),以便获取{ {1}}实体,然后从那里检查角色或其他服务
User
从大型会话商店中的数据处理和重建菜单可能至少与普通的KNPMenuBuilder服务一样复杂。