2012-12-18 21 views
21

पर" सुरक्षा कॉन्टेक्स्ट में एक टोकन नहीं मिला "मैंने लॉगिन तंत्र के साथ एक सिलेक्स प्रोजेक्ट बनाया।"सिलेक्स/सिम्फनी

एक Symfony विशेषज्ञ होने के नाते नहीं, मैं सख्ती से प्रमाणीकरण प्रक्रिया के लिए दिशा निर्देश यहाँ का पालन किया: http://silex.sensiolabs.org/doc/providers/security.html

... और यह मेरे विकास के वातावरण पर ठीक काम करता है

हालांकि, जब मैं पर मेरी परियोजना धक्का दे दिया मेरी उत्पादन सर्वर, मैं निम्न त्रुटि हर बार मैं अपने वेब एप्लिकेशन

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

जिसका मतलब है में प्रवेश करने की कोशिश पाने कि AccessListener.php

में निम्न कोड
$this->context->getToken()); 

एक expection

तथ्य यह है कि एक ही कोड मेरे विकास के वातावरण पर पूरी तरह से ठीक काम करता है को देखते हुए फेंकता है, मुझे लगता है कि यह मेरे उत्पादन सर्वर विन्यास के साथ कुछ है।

मैं इस सूत्र http://groups.google.com/forum/#!msg/symfony-devs/jKphNy_0Q2Y/vYfkAuyjSHEJ कोई परिणाम के साथ अपने प्रोजेक्ट की .htaccess

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

में निम्न पंक्ति जोड़ने के लिए पता चलता है कि पाया। मुझे अभी भी "सुरक्षा टोकन्टेक्स्ट में एक टोकन नहीं मिला" अपवाद मिलता है।

क्या किसी के पास कोई विचार है?

संपादित $app['security.firewalls'] की सामग्री पीछा कर रहा है

$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

क्या आप '$ ऐप ['security.firewalls'] 'सरणी की सेटिंग्स पोस्ट कर सकते हैं? –

+0

@ m2mdas: मैंने इसे – benoit

+1

से ऊपर शामिल किया है 'लॉगिन' फ़ायरवॉल सरणी में 'अनाम' => सत्य, 'जोड़ने का प्रयास करें। –

उत्तर

0

सबसे अधिक संभावना कारण है कि इस अपने स्थानीय मशीन पर लेकिन अपने उत्पादक वातावरण में नहीं काम करता है कि .htaccess, अपाचे के द्वारा समर्थित है, जबकि nginx does not bother wasting I/O and CPU time parsing this files

आप अपनी .htaccess पोस्ट करते हैं तो मैं तुम्हें दिखाता कैसे performant nginx पठनीय विन्यास को यह अनुवाद करने के लिए होगा।

संपादित

Silex भी, nginx के लिए एक विन्यास उदाहरण ऐसा लगता है

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

+1

ऊपर दिए गए लिंक को देखें –

1

यह HTTP मूल प्रमाणीकरण के साथ कोई संबंध नहीं है नहीं है, क्योंकि आप में से किसी में उसका उपयोग नहीं करते आपके फायरवॉल आप जो उपयोग करते हैं वह form एंट्री पॉइंट वाला फ़ायरवॉल है, जो सुरक्षा टोकन को स्टोर करने के लिए सत्र का उपयोग करता है।

मैं आप कैसे सत्र (और कुकीज़) अपने देव वातावरण की तुलना में prod सर्वर पर प्रबंधित कर रहे हैं को देखने के लिए सुझाव है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^