Php 管理员路径的Silex防火墙设置

Php 管理员路径的Silex防火墙设置,php,symfony,authentication,silex,Php,Symfony,Authentication,Silex,我需要设置silex防火墙,如下所示: www.mysite.com/* => access to all users www.mysite.com/admin/* => access to only logged in users 我使用此设置,但未按预期工作: $app->register(new SecurityServiceProvider(), array( 'security.firewalls' => array(

我需要设置silex防火墙,如下所示:

www.mysite.com/* => access to all users
www.mysite.com/admin/* => access to only logged in users
我使用此设置,但未按预期工作:

$app->register(new SecurityServiceProvider(), array(
            'security.firewalls' => array(
                'secure' => [
                    'pattern' => '^/.*$',
                    'anonymous' => true, 
                    'form' => array(
                        'login_path' => '/admin/login',
                        'check_path' => '/admin/auth'
                    ),
                    'logout' => array(
                        'logout_path' => '/admin/logout'
                    ),
                    'users' => $app->share(function() use ($app) {
                        return new AuthenticationSuccessHandler($app['db']);
                    }),
                ]
            ),
            'security.access_rules' => array(
                array('^/admin$', 'ROLE_ADMIN')
            )

        ));
有什么帮助吗? 非常感谢-

'users' => $app->share(function() use ($app) {
     return new AuthenticationSuccessHandler($app['db']);
 }),
上面的函数需要返回一个实现

Symfony\Component\Security\Core\User\UserProviderInterface

在此处检查自定义用户提供程序

也可以将登录路径移到安全区域之外。另一种配置方式是:

  $app['security.firewalls'] = array(
'secure' => array(
    'pattern' => '^/admin/',
    'form' => array('login_path' => '/login', 'check_path' => '/admin/auth'),
    'users' => $app->share(function () use ($app) {
         return new MyUserProvider($app['db']); 
     }),
    ),
  ),
);
$app['security.access_rules'] = array(
array('^/admin', 'ROLE_ADMIN')
);

确保您注册了doctrine dbal。

您能详细说明一下它的工作原理吗?另外,请添加Monog provider并启用debug$app['debug']=true,然后检查日志。启用日志记录时,安全组件确实会发出大量信息。哦,是的,你真的应该详细说明一下,它并没有像预期的那样起作用:-