我只是想更改User内存提供程序的默认对象。默认User对象是Symfony\Component\Security\Core\User\User. 但这个对象不满足我的要求,所以我复制了该对象并添加了一些满足我的要求的属性,然后将其命名为并按InMemoryUser如下方式使用:
encoders:
App\Component\Security\Core\User\InMemoryUser: plaintext
然后我在尝试运行该应用程序时收到以下错误。
No encoder has been configured for account "App\Component\Security\Core\User\InMemoryUser"
经过大约半个小时的调查,我发现了这个问题。Symfony\Component\Security\Core\User\InMemoryUserProviderSymfony默认调用并使用Symfony\Component\Security\Core\User\User对象在方法中创建内存用户__construct。
InMemoryUserProvider然后我尝试按如下方式覆盖默认值。
services:
App\Component\Security\Core\User\CustomInMemoryUserProvider:
decorates: security.user.provider.concrete.api_user_provider
arguments:
$users: [] # this should be contains in-memory users defined in the security.yaml but i dont know how to do that.
$users这工作正常,除了一个小问题,不像 那样注入InMemoryUserProvider。通常,$users包含定义在内存中的用户列表security.yaml。
现在,我如何$users为我的对象注入CustomInMemoryUserProvider,这是更改User对象的好习惯吗InMemoryProvider?
感谢您提前的答复。
我就symfony 5.1顺便用一下
森林海