我需要设置我的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
查看此处查看自定义用户提供商文档
也可以将login_path移动到安全区域之外。另一种配置方式是:
$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')
);
确保您注册了条令数据库。