2016-11-17 4 views
0

я борюсь с силикатной безопасностью:Silex конфигурация безопасности

У меня есть следующий:

$app->register(new Silex\Provider\SecurityServiceProvider()); 

и позже:

$app['security.firewalls'] = array(
    'admin' => array(
     'pattern' => '^/admin', 
     'http' => true, 
     'users' => array(
      // raw password is foo 
      'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsReLf569mSKDsfods6LYQ8t+a8EW9oaircfMpmaLbPBh4FOBiiFyLfuZmTSUwzZg=='), 
     ), 
    ), 
); 

, но когда я попал путь «локальной/админ «Im получение:

Found error: No route found for "GET /admin" 

не могу понять документы на странице silex rly .. Должен ли я регистрировать фильтры безопасности с контроллерами?

Idefined следующим образом функцию в контроллере:

public function admin(){ 
     return 'Hello'; 
    } 

и маршрут для этого является:

$app->get('/admin', 'app.vendor_controller:admin'); 

теперь я получаю:

Hello 

как только я попал путь/админ , без формы аутентификации. Таким образом, нет никакой аутентификации proccess включено ...

EDIT ~~~~~~~~~~~~~~~~~~~~~

ОК, так что теперь после удара URL/админ Я Я получаю аутентификационный баннер с полями для ввода, как пользователь и пароль, я набираю admin, foo, но на это нет никакого эффекта.

`A username and password are being requested by http://localhost:8080. The site says: “Secured”` 

код выглядит следующим образом:

$app['security.firewalls'] = array(
    'admin' => array(
     'pattern' => '/admin', 
     'http' => true, 
     'users' => array(
      'admin' => array('ROLE_ADMIN', 'foo') 
     ))); 
$app['security.access_rules'] = array(
    array('/admin', 'ROLE_ADMIN'), 
); 

$app->register(new Silex\Provider\SecurityServiceProvider(), array(
    'security.firewalls' => array(
    'pattern' => '/admin', 
    'http' => true, 
    'users' => array(
     // raw password is foo 
     'admin' => array('ROLE_ADMIN', 'foo'), 
    )))); 
+0

вы настроены 'security.access_rules', чтобы только позволяет пользователю с ROLE_ADMIN? – Federkun

+0

i belive i did not, как я могу это сделать? – filemonczyk

+0

'' admin '=> array (' ROLE_ADMIN ',' foo ') ', кодер по умолчанию использует sha512, почему вы установили вместо него пароль с открытым текстом? вы изменили 'security.encoder.digest''? – Federkun

ответ

0

Вы настроили брандмауэр, которые соответствуют каждые /admin* URLs, но это не означает, что каждый URL требует аутентификации. Вы можете быть anonymous user, и все будет хорошо. Если вы хотите сказать, что кремнезем «пользователю потребуется ROLE_ADMIN быть разрешены здесь», вам нужно добавить

$app['security.access_rules'] = array(
    array('^/admin', 'ROLE_ADMIN'), 
); 
+0

OK Я нашел решение, данный пример на сайте не был декодирован Bcrypt, что является декодером по умолчанию для silex security atm. – filemonczyk

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