Я использую Silex и SecurityProvider, мой брандмауэр:
$app->register(new Silex\Provider\SecurityServiceProvider(), array( 'security.firewalls' => array( 'user' => array( 'pattern' => '^/user/', 'form' => array( 'login_path' => '/connexion', 'check_path' => '/user/login_check', 'default_target_path' => 'homepage_user' ), 'logout' => array('logout_path' => '/user/deconnexion') ... ) ) ));
Оно работает ! Но я не нашел доступа к объекту пользователя в шаблоне, синтаксис symfony не работает:
{{ app.user }}
Поэтому я добавляю новый глобальный в Twig вот так:
$app['twig'] = $app->share($app->extend('twig', function($twig, $app) { $token = $app['security']->getToken(); $user = ($token === null) ? null : $token->getUser(); $twig->addGlobal('user', $user); return $twig; }));
Он работает, но не за защищенной областью: $ token равен нулю
Мой вопрос прост: как я могу получить доступ к пользователю за пределами охраняемой зоны?
спасибо
EDIT: я попытался добавить брандмауэр с анонимным = true, например:
$app->register(new Silex\Provider\SecurityServiceProvider(), array( 'security.firewalls' => array( 'user' => array( 'pattern' => '^/user/', 'form' => array( 'login_path' => '/connexion', 'check_path' => '/user/login_check', 'default_target_path' => 'homepage_user' ), 'logout' => array('logout_path' => '/user/deconnexion'), ... ), 'unsecured' => array( 'anonymous' => true ) ) ));
Но он не работает, за пределами защищенной области, когда пользователь регистрируется, токен является «анонимным».