2017-02-23 64 views
1

Я разрабатываю проект, где я хочу иметь два вход формы один для области администрирования системы, а другой для доступа к клиентам и я настроил следующие брандмауэрыКак правильно настроить несколько брандмауэров в silex?

'admin'  => array(
    'pattern' => '^/.*$', 
    'anonymous' => true, 
    'form'  => array(
     'login_path' => '/', 
     'check_path' => '/login_check', 
     'default_target_path' => '/dashboard', 
     'always_use_default_target_path' => true, 
     'username_parameter' => 'username', 
     'password_parameter' => 'password', 
     'csrf_parameter' => 'login_token', 
     'failure_path' => '/', 
    ), 
    'logout' => array(
     'logout_path' => '/logout', 
     'target' => '/' 
    ), 
    'users' => $app->factory(function() use ($app) { 
     return new Lib\Provider\UserProvider($app); 
    }) 
), 
'clients'  => array(
    'pattern' => '^/clients', 
    'anonymous' => true, 
    'form'  => array(
     'login_path' => '/clients/login', 
     'check_path' => '/clients/login_check', 
     'default_target_path' => '/clients/admin', 
     'always_use_default_target_path' => true, 
     'username_parameter' => 'username', 
     'password_parameter' => 'password', 
     'csrf_parameter' => 'login_token', 
     'failure_path' => '/clients', 
    ), 
    'logout' => array(
     'logout_path' => '/clients/logout', 
     'target' => '/clients/login' 
    ), 
    'users' => $app->factory(function() use ($app) { 
     return new Lib\Provider\ClientProvider($app); 
    }) 
) 

«check_path» = > «/ login_check» в админ брандмауэр работает правильно, но если вы хотите, чтобы перейти к URL, порожденного check_path в клиентах брандмауэра он отмечает следующее сообщение об ошибке

NotFoundHttpException in HttpKernel.php line 134:  
Unable to find the controller for path "/clients/login_check". The route is wrongly configured. 

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

Спасибо

+0

Я не был уверен в вашем вопросе, нормально ли работает путь '/ clients/login_check', если вы просто заходите прямо туда? – mickadoo

+0

Привет Микаду, я ценю внимание, когда я выполняю форму для входа и нажимаю, чтобы проверить учетные данные, она отмечает ошибку –

ответ

1

Похоже, что ваш check_path для части «клиентов» не находится за брандмауэром. Поскольку порядок значим при определении нескольких брандмауэров (выигрывает первый сопоставимый шаблон), я бы поставил на то, что ваш шаблон брандмауэра «admin» уже захватывает все URL-адреса, и поэтому URL-адреса «/ clients» пойманы этим, а не «клиентов» один.

Возможно, попробуйте временно переименовать маршруты администратора с помощью префикса «admin», соответствующим образом измените брандмауэр (с шаблоном, улавливающим все «/ admin/...»), и сообщите нам, разрешила ли он вашу проблему или если возвращенная ошибка изменилась.

EDIT: Или просто изменить порядок ваших двум межсетевых экранов, так что один клиентов соответствуют маршрутам до одного администраторских.

Cheers.

+0

Wuooooooouuuuu Guigzz очень благодарю вас, я меняю порядок и капун на мои работы по подключению ..... –

+0

Добро пожаловать ! – Guigzz

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

  • Нет связанных вопросов^_^