我无法弄清楚如何使用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());
Run Code Online (Sandbox Code Playgroud)
这只是抛出:
Fatal error: Uncaught exception 'InvalidArgumentException' with message 'Identifier "security.authentication_providers" is not defined.'
Run Code Online (Sandbox Code Playgroud)
根据文档在某些情况下,当您要访问处理请求之外的安全功能时,您必须调用$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.
Run Code Online (Sandbox Code Playgroud)
agm*_*gas 12
我试图在SecurityServiceProvider之前注册时遇到了同样的异常TwigServiceProvider.
我刚刚更改了注册顺序(Twig 之后的安全性 ),一切都开始正常工作:
// 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());
Run Code Online (Sandbox Code Playgroud)
小智 12
您必须在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__),
));
Run Code Online (Sandbox Code Playgroud)
上面的代码似乎可以解决您的问题,但您必须至少添加一个身份验证提供程序.
| 归档时间: |
|
| 查看次数: |
5828 次 |
| 最近记录: |