2012-12-18 42 views
21

"SecurityContext'te A Token bulunamadı. Giriş mekanizmasına sahip bir Silex projesi oluşturdum.Silex/Symfony

Symfony uzmanı olmak değil, kesinlikle kimlik doğrulama işlemi için burada yönergeleri takip: Ben projemi itti zaman http://silex.sensiolabs.org/doc/providers/security.html

... ve

Ancak, benim geliştirme ortamı üzerinde çalışıyor benim üretim sunucusu, aşağıdaki hatayı ben demek benim web uygulaması

[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 [] [] 

içine oturum açmaya her zaman olsun o AccessListener.php

aşağıdaki kod
$this->context->getToken()); 

aynı kod benim geliştirme ortamı üzerinde mükemmel çalışıyor gerçeği göz önüne alındığında, bir expection verince, benim üretim sunucu konfigürasyonu ile bir ilgisi vardır varsayalım.

hiçbir sonuç benim projenin .htaccess

RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L] 

aşağıdaki satırı eklemek için anlaşılacağı Konuyu http://groups.google.com/forum/#!msg/symfony-devs/jKphNy_0Q2Y/vYfkAuyjSHEJ bulundu. Hala "SecurityContext'te bir Token bulunamadı" istisnasını alıyorum.

Herhangi bir fikri olan var mı?

Düzenleme $app['security.firewalls'] içeriği

$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'), 
), 
) 
) 
)); 
+0

'$ app ['security.firewalls']' dizisinin ayarlarını gönderir misiniz? –

+0

@ m2mdas: – benoit

+1

'un üstüne dahil ettim '' anonim '=> true' '' login' güvenlik duvarı dizisini eklemeyi deneyin. –

cevap

0

Büyük olasılıkla bu yerel makinenizde ama senin üretken bir ortamda çalıştığını nedeni bu .htaccess, Apache tarafından desteklenen iken nginx does not bother wasting I/O and CPU time parsing this files takip ediyor

.htaccess'inizi gönderirseniz, bunu nginx ile okunabilen yapılandırmaya nasıl dönüştüreceğinizi göstereceğim.

DÜZENLEME

Eğer herhangi kullanmak yok çünkü Silex bile, kendisinin HTTP Basic Auth ile ilgisi yoktur görünüyor

http://silex.sensiolabs.org/doc/web_servers.html

+1

Yukarıda eklediğim bağlantıya göz atın –

1

nginx için bir yapılandırma örneği vardır güvenlik duvarlarınız. Kullandığınız, form giriş noktası olan bir güvenlik duvarıdır ve güvenlik belirtecini depolamak için oturum kullanır.

Dev ortamınızla karşılaştırıldığında prod sunucusunda oturumların (ve çerezlerin) nasıl yönetildiğini incelemenizi öneririm.