簡體   English   中英

Silex / Symfony Security:如何對用戶登錄執行額外檢查?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM