我不知道如何在SecurityServiceProvider
中使用Silex
。我的配置是:
$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());
这只是抛出:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Identifier "security.authentication_providers" is not defined.'
根据文档,在某些情况下,当您想访问处理请求之外的安全功能时,您必须调用
$app->boot();
,但这不是我的情况。如果我在
$app->boot();
之前调用$app->register(...)
它不会引发任何异常,但它可能根本不会启动,因为在生成登录表单时,twig抛出:Unable to generate a URL for the named route "_admin_login_check" as such route does not exist.
可能有同样的问题,但它已经关闭了,所以我想应该现在就修复
最佳答案
我在尝试在SecurityServiceProvider
之前注册TwigServiceProvider
时遇到了同样的异常。
我刚更改了注册顺序(一根接一根的安全),一切都开始正常:
// Twig service
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => sprintf("%s/../views", __DIR__),
));
// Security service
$app["security.firewalls"] = array();
$app->register(new Silex\Provider\SecurityServiceProvider());