ユーザーが「削除済み」フラグを持っているかどうかを確認するためにFOSUserBundleログインプロセスに正確にフックする場所を見つけようとしています。真の場合は、ログインを終了してエラーを返します。
1 に答える
認証は、FOS ユーザー バンドルではなく、セキュリティ コンポーネントによって処理されます。詳細については、まずこのドキュメントをお読みください
短いまとめはこちら
firewalls:
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_provider: form.csrf_provider
logout: true
anonymous: true
ファイアウォールで保護されている URL にユーザーがリクエストを送信すると、セキュリティ システムがアクティブになります。ファイアウォールの役割は、ユーザーを認証する必要があるかどうかを判断し、認証する必要がある場合は、認証プロセスを開始したユーザーに応答を返すことです。
SRC: http://symfony.com/doc/master/book/security.html#how-security-works-authentication-and-authorization
providers:
fos_userbundle:
id: fos_user.user_provider.username
ファイアウォールにはプロバイダー (プロバイダーのユーザー名とパスワード) が必要です。FOS ユーザー バンドルには、独自のユーザー プロバイダーがあります。
あなたの問題
fos ユーザー バンドルのユーザー マネージャーを拡張し、ロジックを上書きして、より多くの条件をチェックすることができます。
ここでサンプルを見ることができます https://stackoverflow.com/a/14985093/598424
今すぐ削除フラグを確認する方法
インターフェイスは、アカウントのステータスを検証するための 4 つの
AdvancedUserInterface
メソッドを追加します。
isAccountNonExpired()
ユーザーのアカウントの有効期限が切れているかどうかを確認します。isAccountNonLocked()
ユーザーがロックされているかどうかを確認し、isCredentialsNonExpired()
ユーザーの資格情報 (パスワード) の有効期限が切れているかどうかを確認します。isEnabled()
ユーザーが有効かどうかを確認します。