簡體   English   中英

Symfony:進入登錄過程以檢查其他條件

[英]Symfony: Hooking into login process to check for additional conditions

我在項目中實現了Symfony的高級用戶界面。 它可以注冊和登錄用戶。

現在,我還有其他條件要檢查用戶登錄的時間。例如,用戶是否已經確認他或她的電子郵件和/或其他條件。 這些條件是用戶實體的數據庫/屬性中的字段,因此很容易檢查它們。

想象一下,我想向用戶類中添加isEmailConfirmed()函數,該函數類似於高級用戶界面中的isEnabled()函數。 如果返回true,則用戶可以登錄。 如果返回false,我想限制訪問並顯示一條消息來解決該問題。

->將這樣的函數添加到Symfony\\Component\\Security\\Core\\User\\UserCheckercheckPreAuth()函數中是否正確? 我正在考慮使用checkCustomConditions()類的函數掛在這里?

在身份驗證過程中,嘗試對用戶進行身份驗證時,提供程序首先獲取憑據,然后從存儲(數據庫,活動目錄)中檢索用戶。 然后,在實際為用戶創建令牌之前,將調用Symfony\\Component\\Security\\Core\\User\\UserChecker::preAuth()方法。 在這里,您上面提到的每種情況都專門拋出異常。 您可以在您的loginAction中捕獲它們並解釋它們。

我猜想添加自己的preAuth邏輯的最不干擾方式是嘗試覆蓋提供程序的定義(如果使用的是默認設置)以使用自己的UserChecker。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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