Je n'arrive pas à comprendre comment utiliser SecurityServiceProvider
dans Silex
. Ma configuration est:Silex SecurityServiceProvider renvoie «Identifiant» security.authentication_providers «n'est pas défini».
$app['security.firewalls'] = array(
'admin' => array(
'pattern' => '^/_admin/.+',
'form' => array('login_path' => '/_admin/', 'check_path' => '/_admin/login_check'),
'logout' => array('logout_path' => '/_admin/logout'),
'users' => array(
'admin' => array('ROLE_ADMIN', '5FZ2Z8QIkA7UTZ4BYkoC+GsR...'),
),
),
);
$app->register(new Silex\Provider\SecurityServiceProvider());
Ce juste lancers francs:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Identifier "security.authentication_providers" is not defined.'
Selon la documentation dans certains cas, si vous souhaitez accéder à des fonctions de sécurité à l'extérieur de la manipulation d'une demande, vous devez appeler $app->boot();
mais ce n'est pas ma situation.
Si je l'appelle $app->boot();
avant $app->register(...)
il ne soulève aucune exception, mais il ne probablement démarre pas du tout, car alors à générer formulaire de connexion Brindille lance:
Unable to generate a URL for the named route "_admin_login_check" as such route does not exist.
Il y a an issue a few months ago avec probablement le même problème, mais il est fermé donc je suppose qu'il devrait être corrigé maintenant
Peut-être pas lié à votre question, mais vous ne respectez pas l'un des deux règles d'or (elles sont indiquées dans les documents): votre login_path DOIT être défini en dehors de la zone réservée. La vôtre est à/_admin /, et votre zone restreinte est à /_admin/.+ donc vous ne la définissez pas à l'extérieur. – mTorres
Je ne pense pas. L'expression '/ _admin /.+' ne correspond pas au chemin '/ _admin /', donc '/ _admin /' est en dehors de la zone restreinte. – martin