Php Symfony 2多个提供程序不在secuirty.yml中工作
我有多个proivders用户和管理员,因此我有以下security.ymlPhp Symfony 2多个提供程序不在secuirty.yml中工作,php,symfony,symfony-2.3,symfony-2.7,Php,Symfony,Symfony 2.3,Symfony 2.7,我有多个proivders用户和管理员,因此我有以下security.yml security: encoders: AppBundle\Entity\AdminUser: bcrypt # https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded providers: #in_memory: # memory: ~
security:
encoders:
AppBundle\Entity\AdminUser: bcrypt
# https://symfony.com/doc/current/security.html#b-configuring-how-users-are-loaded
providers:
#in_memory:
# memory: ~
admin_db:
entity: { class: AppBundle\Entity\AdminUser, property: email }
firewalls:
# disables authentication for assets and the profiler, adapt it according to your needs
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
admin_db:
provider: admin_db
anonymous: false
form_login:
login_path: login
check_path: login
# activate different ways to authenticate
# https://symfony.com/doc/current/security.html#a-configuring-how-your-users-will-authenticate
#http_basic: ~
# https://symfony.com/doc/current/security/form_login_setup.html
#form_login: ~
access_control:
- { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
- { path: ^/, roles: ROLE_ADMIN }
但当我尝试访问登录页面时,我看到了这个错误
此页面无法工作。localhost已多次重定向您。尝试
清理你的饼干。错误\u太多\u重定向
问题在于,您的防火墙不允许使用
anonymous:false
指定的任何匿名访问。这意味着您的登录访问控制不起作用。解决此问题的两种常见方法是将登录路由从防火墙中移除,或者允许匿名访问,然后使用访问控制来要求角色
如果要将登录路由移出:
firewalls:
login:
pattern: ^/login$
security: false
admin_db:
...
form_login:
login_path: login
check_path: login_check
重要的是,路由login\u check
指向防火墙内的某些内容。因此,基本上除了/login
之外的任何东西都可以工作,例如登录/检查
。在控制器中,您可以为此创建一个空操作,也可以将其指向与登录相同的操作
另一种解决方案在您的情况下会更简单,因为您的访问控制已经正确:
firewalls:
admin_db:
...
anonymous: ~
在访问控制中,您允许匿名登录,但所有其他路由必须具有角色\u ADMIN
。因此,不需要进行其他更改。问题在于,您的防火墙不允许使用匿名:false指定的任何匿名访问。这意味着您的登录访问控制不起作用。解决此问题的两种常见方法是将登录路由从防火墙中移除,或者允许匿名访问,然后使用访问控制来要求角色
如果要将登录路由移出:
firewalls:
login:
pattern: ^/login$
security: false
admin_db:
...
form_login:
login_path: login
check_path: login_check
重要的是,路由login\u check
指向防火墙内的某些内容。因此,基本上除了/login
之外的任何东西都可以工作,例如登录/检查
。在控制器中,您可以为此创建一个空操作,也可以将其指向与登录相同的操作
另一种解决方案在您的情况下会更简单,因为您的访问控制已经正确:
firewalls:
admin_db:
...
anonymous: ~
在访问控制中,您允许匿名登录,但所有其他路由必须具有角色\u ADMIN
。因此,不需要进行其他更改。@dbrumann.now我无法登录。没有错误,只需在输入Crednetic后重定向到登录。您的页面底部是否有探查器工具栏?如果是这样,请检查您的用户名是否出现或不出现。
然后单击用户名。它会将您发送到“安全”选项卡,该选项卡会为您提供更多详细信息。或者,查看日志以确定登录是否有效。从外观上看,我猜模式:^/*
在您的管理数据库防火墙中缺失。@dbrumann.second方法很好。非常感谢。还删除了缓存。感谢您提供了很好的解决方案以及解释\@dbrumann。现在我无法登录。没有错误,只需在进入Crednetial后重定向到登录。您是否有profiler工具栏在你的页面底部?如果是这样,请检查您的用户名是否出现或不出现。
然后单击用户名。它会将您发送到“安全”选项卡,该选项卡会为您提供更多详细信息。或者,查看日志以确定登录是否有效。从外观上看,我猜模式:^/*
在您的管理数据库防火墙中缺失。@dbrumann.second方法很好。非常感谢。还删除了缓存。感谢您提供了很好的解决方案,并解释了这一点\