我在Symfony 3.3项目中使用FOS UserBundle并且我有两个防火墙,因为管理员和用户从不同的登录表单(具有不同的URL)连接。 仅当用于日志记录的帐户被授予ADMIN_ROLE时,我才想限制对管理仪表板的访问。 也就是说,如果我尝试使用简单的用户帐户进行身份验证,我会收到消息" Bad credentials"。 有没有办法告诉防火墙只允许某个角色的用户连接?
我的security.yml防火墙部分:
firewalls:
admin:
pattern: ^/admin
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
login_path: /admin
check_path: /admin/login_check
default_target_path: /admin
success_handler: app.security.adminauthentication_handler
failure_handler: app.security.adminauthentication_handler
logout:
path: /admin/logout
target: /admin
anonymous: true
context: application
main:
pattern: ^/
form_login:
provider: fos_userbundle
csrf_token_generator: security.csrf.token_manager
success_handler: app.security.authentication_handler
failure_handler: app.security.authentication_handler
logout: true
anonymous: true
请注意我在两种登录表单中使用AJAX。
由于
答案 0 :(得分:0)
只需在安全性下将此添加到security.yml中,如下所示:
> security :
access_control :
- { path: ^/mysite/dashboard/, role: ROLE_ADMIN }
答案 1 :(得分:0)
您必须定义access_control