问题描述
我想在我的网站上使用两个UserProvider。首先,我想测试LDAPProvider,如果LDAP中不存在该用户,则将调用FOSUserProvider来查看该用户是否存在于数据库中。我需要使用chainProviders。到目前为止,这是我所做的。 LDAP连接工作正常。 security.yaml:
security:
providers:
chain_provider:
chain:
providers: [fos_userbundle,intranet_ldap]
from_database:
entity:
class: App\Entity\User
property: username
fos_userbundle:
id: fos_user.user_provider.username #fos_user.user_manager
intranet_ldap:
#Test avec surcharge LdapUserProvider
id: App\Security\LdapUserProvider
firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin:
pattern: /admin(.*)
context: user
form_login:
provider: fos_userbundle
login_path: /admin/login
use_forward: false
check_path: /admin/login_check
failure_path: null
logout:
path: /admin/logout
target: /admin/login
anonymous: true
#switch_user: true
main:
pattern: ^/
context: user
anonymous: true
form_login_ldap:
service: Symfony\Component\Ldap\Ldap
provider: intranet_ldap
login_path: /login
check_path: /login_check
dn_string: 'DC=xxx-group,DC=lan'
query_string: '(&(sAMAccountName={username}))'
use_forward: false
always_use_default_target_path: true
default_target_path: /profile
use_referer: true
logout:
path: /logout
target: /
在fos_user.yaml中:
fos_user:
db_driver: orm # other valid values are 'mongodb' and 'couchdb'
firewall_name: main
user_class: App\Entity\User
group:
group_class: App\Entity\Group
group_manager: sonata.user.orm.group_manager # If you're using doctrine orm (use sonata.user.mongodb.group_manager for mongodb)
service:
user_manager: sonata.user.orm.user_manager
我不工作。我想我忘了一些东西。 LDAP仍然可以,但是数据库中的用户不可以。
我想知道它是否与form_login有关。来自FOSUserBundle的form_login用于管理员,而form_login_ldap用于主体。如何同时使用它们? 另外,我有一个LdapUser类和一个User类,它扩展了Sonata \ UserBundle \ Entity \ BaseUser,也许它应该扩展了FOSUser \ Entity \ BaseUser?
感谢您的帮助
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)