Php 管理员路径的Silex防火墙设置
我需要设置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(
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,然后检查日志。启用日志记录时,安全组件确实会发出大量信息。哦,是的,你真的应该详细说明一下,它并没有像预期的那样起作用:-