将两个实体与 FOSUserBundle 一起使用时按用户名或电子邮件记录
Logging by Username or Email when using two entities with FOSUserBundle
我正在将 FOSUSerBundle 与两个不同的实体一起用于不同的用户,例如
默认用户和管理员用户
因此我在 security.yaml
中有以下内容
providers:
user:
entity:
class: AppBundle:User
property: 'email'
admin:
entity:
class: AppBundle:Admin
property: 'email'
防火墙设置如下:
admin:
pattern: ^/admin
anonymous: ~
provider: admin
form_login:
login_path: /admin/login
csrf_token_generator: security.csrf.token_manager
default_target_path: /admin
check_path: admin_login_check
logout_on_user_change: true
logout:
path: /admin/logout
target: /admin
invalidate_session: false
access_denied_handler: AppBundle\Security\AccessDeniedHandler
context: application
main:
pattern: ^/
provider: user
logout_on_user_change: true
form_login:
# csrf_token_generatlor: security.csrf.token_manager
login_path: /login
default_target_path: /user
check_path: fos_user_security_check
logout:
path: user_logout
target: user_login
invalidate_session: false
context: application
anonymous: ~
access_denied_handler: AppBundle\Security\AccessDeniedHandler
如何让 FOSUserBundle 工作,以便我可以使用用户名或电子邮件?
一般由
设置
id: fos_user.user_provider.username_email
但这不能用于此配置。
我使用 fos_userbundle 已经有很长时间了,但从我在代码中看到的情况来看,您需要更新 security.yml 文件才能使用它:
security:
providers:
fos_userbundle_admin: appbundle.service.providing.admin_user
并且在该服务(扩展 FOS\UserBundle\Security\UserProvider
)中,您需要重写 findUser($username)
方法。在那里,您可以使用提供的用户名。
我想(未经测试)您可以创建另一个提供程序 (fos_userbundle_user) 并将其用于防火墙中的用户。
希望这是有道理的。它在这里工作,但那是在 symfony 2.8 应用程序中。 FOS_UserBundle 从那以后发生了一些变化。
我正在将 FOSUSerBundle 与两个不同的实体一起用于不同的用户,例如 默认用户和管理员用户
因此我在 security.yaml
中有以下内容 providers:
user:
entity:
class: AppBundle:User
property: 'email'
admin:
entity:
class: AppBundle:Admin
property: 'email'
防火墙设置如下:
admin:
pattern: ^/admin
anonymous: ~
provider: admin
form_login:
login_path: /admin/login
csrf_token_generator: security.csrf.token_manager
default_target_path: /admin
check_path: admin_login_check
logout_on_user_change: true
logout:
path: /admin/logout
target: /admin
invalidate_session: false
access_denied_handler: AppBundle\Security\AccessDeniedHandler
context: application
main:
pattern: ^/
provider: user
logout_on_user_change: true
form_login:
# csrf_token_generatlor: security.csrf.token_manager
login_path: /login
default_target_path: /user
check_path: fos_user_security_check
logout:
path: user_logout
target: user_login
invalidate_session: false
context: application
anonymous: ~
access_denied_handler: AppBundle\Security\AccessDeniedHandler
如何让 FOSUserBundle 工作,以便我可以使用用户名或电子邮件?
一般由
设置id: fos_user.user_provider.username_email
但这不能用于此配置。
我使用 fos_userbundle 已经有很长时间了,但从我在代码中看到的情况来看,您需要更新 security.yml 文件才能使用它:
security:
providers:
fos_userbundle_admin: appbundle.service.providing.admin_user
并且在该服务(扩展 FOS\UserBundle\Security\UserProvider
)中,您需要重写 findUser($username)
方法。在那里,您可以使用提供的用户名。
我想(未经测试)您可以创建另一个提供程序 (fos_userbundle_user) 并将其用于防火墙中的用户。
希望这是有道理的。它在这里工作,但那是在 symfony 2.8 应用程序中。 FOS_UserBundle 从那以后发生了一些变化。