SecurityServiceProvider

SecurityServiceProvider

我不知道如何在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());

07-24 14:16