Ho costruito un progetto Silex con un meccanismo di login."Un token non è stato trovato nel SecurityContext" su Silex/Symfony
Non essendo un esperto di Symfony, ho seguito rigorosamente le linee guida qui per il processo di autenticazione: http://silex.sensiolabs.org/doc/providers/security.html
... e funziona bene sul mio ambiente di sviluppo
Tuttavia, quando ho spinto il mio progetto sulla mia server di produzione, ottengo il seguente errore ogni volta che cerco di accedere al mio web app
[2012-12-18 16:35:33] CRITICAL: Symfony\Component\Security\Core\Exception\AuthenticationCredentialsNotFoundException:
A Token was not found in the SecurityContext. (uncaught exception) at
/my/app/path/vendor/symfony/security/Symfony/Component/Security/Http/Firewall/AccessListener.php line 53 [] []
che significa che il seguente codice nel AccessListener.php
$this->context->getToken());
genera expection
in considerazione del fatto che lo stesso codice funziona perfettamente bene sul mio ambiente di sviluppo, suppongo che abbia qualcosa a che fare con la mia configurazione server di produzione.
ho trovato questa discussione http://groups.google.com/forum/#!msg/symfony-devs/jKphNy_0Q2Y/vYfkAuyjSHEJ che propone di aggiungere la seguente riga al file .htaccess del mio progetto
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
senza alcun risultato. Ricevo ancora l'eccezione "Un token non trovato nell'eccezione SecurityContext".
Qualcuno ha un'idea?
Modifica Il contenuto del $app['security.firewalls']
è la seguente
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'login' => array(
'pattern' => '^/login$'
),
'admin' => array(
'pattern' => '^/',
'form' => array('login_path' => '/login', 'check_path' => '/admin/login_check'),
'logout' => array('logout_path' => '/admin/logout'), // url to call for logging out
'users' => array(
'admin' => array('ROLE_ADMIN', 'SOMEPASSWORD'),
),
)
)
));
puoi pubblicare le impostazioni di '$ app ['security.firewalls']' array? –
@ m2mdas: l'ho incluso sopra – benoit
Prova ad aggiungere ''anonymous' => true,' nell'array del firewall 'login'. –