Я построил проект Silex с механизмом входа.
Не будучи экспертом по 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());
выдает expec
Учитывая тот факт, что тот же код отлично работает в моей среде разработки, я предполагаю, что он имеет какое-то отношение к моей конфигурации производственного сервера.
Я нашел эту цепочку http://groups.google.com/forum/#!msg/symfony-devs/jKphNy_0Q2Y/vYfkAuyjSHEJ, которая предлагает добавить следующую строку в мой проект .htaccess
RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization},L]
без результата. Я все еще получаю исключение "Токен не обнаружен в исключении SecurityContext".
Есть ли у кого-нибудь идеи?
Edit
Содержимое $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'),
),
)
)
));