php-UserLoaderInterfaceの実装のログインページでのsymfonyエラー
symfonyバージョン5.4.4を使用していて、アプリケーションの最初のページはログインページですが、ロードすると次のエラーが発生します:
「App\Entity\mUser」エンティティをDoctrineリポジトリにする必要があります ("App \ Repository \ mUserRepository")実装 「Symfony\Bridge \ Doctrine \ Security \ User\UserLoaderInterface」またはを設定します 対応するエンティティプロバイダー構成の「プロパティ」オプション。]
このエラーの原因は何ですか?
答え :
解決策:
SymfonyはDoctrineリポジトリからユーザーを取得する方法を知りません。
エラーは、何をする必要があるかについてかなり明白です。
2つのオプションがあります:
既存のユーザーリポジトリ( App\Repository\mUserRepository )を変更して、
Symfony\Bridge\Doctrine\Security\User\UserLoaderInterface
インターフェースには1つのメソッドしかありません:
public function loadUserByUsername(string $username);
したがって、次のようなことを行う必要があります:
classApp\Repository\mUserRepositoryはUserLoaderInterfaceを実装します
{{
public function loadUserByUsername(string $ username):?UserInterface
{{
//ユーザー名でリポジトリからユーザーを取得するロジックを実装します。
}
}
そのインターフェースをチェックすると、メソッド loadUserByUsername() は実際には非推奨になり、Symfonyでは loadUserByIdentifier()
に置き換えられていることに注意してください。 6歳以上。実装を将来にわたって保証するには、次のようなものが必要です。
classApp\Repository\mUserRepositoryはUserLoaderInterfaceを実装します
{{
public function loadUserByUsername(string $ username):?UserInterface
{{
$ this-> loadUserByIdentifier($ username);を返します。
}
パブリック関数loadUserByIdentifier(string $ identifier):?UserInterface
{{
//ユーザー名でリポジトリからユーザーを取得するロジックを実装します。
}
}
または、エラーメッセージは、ユーザーの識別子として使用するプロパティを構成するように指示しています。
メールで受け取ったとしましょう。mUser::email
プロパティがあります。
providers:
mUserProvider:
entity:
class: App\Entity\mUser
property: email
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。