我正在与Silex Security合作,防火墙和安全设备以这种方式配置:
$app->register(new Silex\Provider\SecurityServiceProvider(), array(
'security.firewalls' => array(
'admin' => array(
'pattern' => '^/secured/',
'form' => array(
'login_path' => '/login',
'check_path' => '/secured/login_check'
),
'users' => $app->share(function() use ($app) {
return new CustomUserProvider($app["db"]);
}),
'logout' => array('logout_path' => '/secured/logout'),
'switch_user' => array('parameter' => '_cambiar_usuario', 'role' => 'ROLE_ALLOWED_TO_SWITCH')
)
)
));
一切正常,但现在我想对用户执行额外的检查,在这种情况下,我想检查用户电子邮件是否已经过验证(只是检查数据库字段是真还是假)对用户来说 - 密码检查。如果邮件验证尚未完成,我想使用自定义消息进行身份验证失败。
答案 0 :(得分:3)
我自己解决了。我不得不扩展Symfony的UserChecker
课程并覆盖checkPreAuth
方法以添加额外的支票。
之后我用我的替换默认用户检查器:
$app->register(new SecurityServiceProvider(), array(
'security.firewalls' => array(
//my firewalls
)
));
$app['security.user_checker'] = $app->share(function ($app) {
return new CustomUserChecker();
});