我有一个自定义用户提供商(让我们称之为MyUserProvider
),用于创建自定义用户(MyUser
或MyOtherUser
,具体取决于用户,但从不心神)。通常,此用户提供程序与SSO / CAS身份验证一起使用(通过BeSimpleSSOBundle)。
但是在开发环境中,我无法使用SSO / CAS身份验证,我必须使用其他身份验证。我认为in_memory
身份验证没问题。但我仍然需要使用MyUserProvider
。
问题是如果在我的security_dev.yml
文件中我只提及MyUserProvider,则用户不会被认证(security.INFO: Authentication request failed for user "kelux": The presented password is invalid
)。为什么?因为MyUser
类不知道用户的密码(它被委托给SSO / CAS)。这就是我想使用in_memory
的原因。
但我不想单独使用in_memory
。如果我这样做,那么将使用的用户是默认的Symfony\Component\Security\Core\User\User
,这不是我想要的。
我不想把它们连在一起,因为我希望它们不是一个或另一个。
这是security_dev.yml
(与我描述的第一种情况一样):
安全:
编码器:
Alecsia \ AnnotationBundle \ Entity \ MyUser:plaintext
providers:
entity:
id: alecsia.MyUserProvider
firewalls:
secured_area:
pattern: ^/
http_basic:
realm: "Secured Demo Area"
alecsia.MyUserProvider
服务按原样描述(它依赖于三个服务来了解它是哪种类型的用户):
services:
alecsia.Lille1UserProvider:
class: Alecsia\AnnotationBundle\Security\User\MyUserProvider
arguments: [@alecsia.MyService,@alecsia.MyOtherService,@alecsia.MyLastService]
那么在使用MyUserProvider时如何提供in_memory
身份验证(仅适用于开发环境)?
感谢您的帮助!