Non riesco a capire come utilizzare SecurityServiceProvider
in Silex
. La mia configurazione è:Silex SecurityServiceProvider genera "Identificatore" security.authentication_providers "non definito".
$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());
Questo getta solo:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Identifier "security.authentication_providers" is not defined.'
Secondo la documentazione in alcuni casi, quando si desidera accedere alle funzioni di sicurezza al di fuori del trattamento di una richiesta devi chiamare $app->boot();
ma questo non è la mia situazione
Se chiamo $app->boot();
prima $app->register(...)
non sollevare alcuna eccezione, ma probabilmente non si avvia affatto, perché poi nel form di login generare Twig getta:
Unable to generate a URL for the named route "_admin_login_check" as such route does not exist.
C'è an issue a few months ago probabilmente con lo stesso problema, ma è chiuso quindi suppongo che dovrebbe essere risolto ora
Forse non relative al tuo problema, ma non compiere con uno dei due regole d'oro (sono dichiarate nei documenti): il tuo login_path DEVE essere definito FUORI dall'area riservata. Il tuo è in/_admin /, e la tua area riservata è in /_admin/.+ quindi non la stai definendo all'esterno. – mTorres
Non penso. Expression '/ _admin /.+' non corrisponde al percorso '/ _admin /', quindi '/ _admin /' è al di fuori dell'area riservata. – martin