2014-01-09 26 views
1

我做了一個從DefaultAuthenticationSuccessHandler擴展的子類,以便在身份驗證過程中添加自定義功能。如果不符合標準,我想停止認證過程。我怎麼做?如何在AuthenticationSuccessHandler中取消認證?

public function onAuthenticationSuccess(Request $request, TokenInterface $token) { 
    if(some_condition_applies){ 
     //if success, resume default flow 
     return parent::onAuthenticationSuccess($request, $token); 
    }else{ 
     //how to fail the authentication here? 
    } 
} 
+0

在驗證用戶身份之後'onAuthenticationSuccess'被調用**。所以我認爲你需要一個自定義的用戶提供者。 –

+0

我這麼認爲。在我查看了Symfony的默認身份驗證提供程序之後,我意識到這是我必須進行更改的提供程序,而不是成功處理程序。 – Tholapz

回答

0

根據您的設置,在Symfony的2.4新SimpleFormAuthenticator功能可以幫助你:How to Create a Custom Form Password Authenticator

這可能是隻適用,如果你的認證機制是用戶名/密碼爲主(不OAuth的什麼)。

此外,您可能只需實現AdvancedUserInterface,然後從類似「isEnabled」的方法返回「false」以阻止登錄(Forbid Inactive Users)。唯一的缺點是你只能訪問你的User類中的數據。如果你需要的東西超出這個,上面的方法應該工作(但是有一點點工作)。

乾杯!

相關問題