2017-02-10 2 views
0

есть ли способ перенаправить на страницу входа с сообщением с помощью symfony 2 access_control?Перенаправление доступа access_controll Symfony 2 с параметрами

Мне нужна текущая роль, но только одно исключение в подпункте. Я хочу создать сообщение сеансовой сумки без ввода контроллера.

Is that is возможно?

access_control: 
     - { path: /user/submission, role: [ROLE_USER_WITH_MESSAGE]} 
     - { path: ^/user, role: [ROLE_USER] } 

Я спрашиваю об этом в причине, чтобы показать сообщение пользователя, если он попытаться идет по определенному маршруту

+0

Пробовали ли вы этот Ansewer: [Что это лучший способ для уведомления пользователя после того, как правило access_control перенаправляет] (HTTP: //stackoverflow.com/a/17432089/7226219) –

ответ

1

Да, это возможно з сеанса (в flashbag сообщения) до входа без контроллера вовлеченного. Это можно сделать с помощью службы точки входа в систему аутентификации, которая вызывается сразу после запуска процесса аутентификации. Эта точка входа в службу аутентификации является частью конфигурации брандмауэра в качестве ключа entry_point.

Более подробно об этом можно найти здесь: http://symfony.com/doc/current/components/security/firewall.html#entry-points

class MyAuthEntryPoint implements AuthenticationEntryPointInterface 
{ 

    protected $router; 

    public function __construct($router) { 
     $this->router = $router; 
    } 

    public function start(Request $request, AuthenticationException $authException = null) { 
     if ($request->get('_route') == 'submission') { 
      $session = $request->getSession(); 
      $session->getFlashBag()->add('submissionUserMessage', 'Weclome user from submission!'); 

      //or if you do not want to use flashBag 
      $session->set('submissionUserMessage', 'Weclome user from submission!'); 
     } 

     return new RedirectResponse($this->router->generate('login')); 
    } 
} 

Сервис

Смежные вопросы