1

ユーザーが「削除済み」フラグを持っているかどうかを確認するためにFOSUserBundleログインプロセスに正確にフックする場所を見つけようとしています。真の場合は、ログインを終了してエラーを返します。

4

1 に答える 1

4

認証は、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()ユーザーが有効かどうかを確認します。

独自のカスタム プロバイダーを作成する方法

于 2013-03-22T08:38:53.703 に答える