[英]Silex/Symfony Security: How to perform additional checks for user login?
我正在使用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')
)
)
));
一切正常,但現在我想對用戶執行額外的檢查,在這種情況下,我想要檢查用戶電子郵件是否已經過驗證(只是檢查數據庫字段是真還是假),而不是用戶 - 密碼檢查。 如果郵件驗證尚未完成,我想使用自定義消息進行身份驗證失敗。
我自己解決了。 我不得不擴展Symfony的UserChecker
類並覆蓋checkPreAuth
方法以添加我的額外檢查。
之后我用我的默認用戶檢查器替換了:
$app->register(new SecurityServiceProvider(), array(
'security.firewalls' => array(
//my firewalls
)
));
$app['security.user_checker'] = $app->share(function ($app) {
return new CustomUserChecker();
});
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.