-6ren">
gpt4 book ai didi

php - Silex SecurityServiceProvider 抛出 'Identifier "security.authentication_providers“未定义。”

转载 作者:可可西里 更新时间:2023-10-31 23:03:02 25 4
gpt4 key购买 nike

我不知道如何在 Silex 中使用 SecurityServiceProvider。我的配置是:

$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->register(...) 之前调用 $app->boot(); 它不会引发任何异常,但它可能不会启动完全是因为 Twig 在生成登录表单时会抛出:

Unable to generate a URL for the named route "_admin_login_check" as such route does not exist.

an issue a few months ago可能有同样的问题,但它已经关闭,所以我想现在应该修复了

最佳答案

您必须在 SecurityServiceProvider 注册和 TwigServiceProvider 注册之间启动您的应用程序:

// Security service
$app["security.firewalls"] = array();
$app->register(new Silex\Provider\SecurityServiceProvider());

// Boot your application
$app->boot();

// Twig service
$app->register(new Silex\Provider\TwigServiceProvider(), array(
'twig.path' => sprintf("%s/../views", __DIR__),
));

上面的代码似乎可以解决您的问题,但您必须至少添加一个身份验证提供程序。

关于php - Silex SecurityServiceProvider 抛出 'Identifier "security.authentication_providers“未定义。”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18022890/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com