我在我的项目中使用多个用户提供程序。
我的security.yml看起来像这样:
security:
...
firewalls:
usertype1:
pattern: ^/root/usertype1_area
provider: type1_provider
usertype2
pattern: ^/root
provider: type2_provider
...
一切正常,我无法以正确的模式登录错误的用户类型,除非我注意到如果我在其中一个提供商中抛出异常,请说type1_provider
,并尝试使用/root/login
路径(仅应使用type2_provider
)登录,Symfony正在type1_provider
以及type2_provider
,我得到一个例外。
当我向/root/usertype1_area/login
投掷时type2_provider
同样如此。
这对我来说是一个问题,因为我希望能够在type1_provider
关闭时访问type2登录。
任何猜测?这是正常行为吗?
编辑: 正如亚历山大·基尔所指出的那样,在我的问题中我不清楚我想要做什么
我的一个提供商依赖于3d派对服务,我希望它在此服务停止时抛出,但我仍然希望能够访问另一个登录,这不应该依赖于提供者投掷。有没有办法实现这个目标?
答案 0 :(得分:0)
您可以在提供商中使用“supportsClass”方法。如果当前用户类不支持加载的提供程序,则返回false。请参阅Symfony \ Component \ Security \ Core \ User \ UserProviderInterface