FOS UserBundle允许防火墙的某些角色

时间:2018-03-17 17:13:18

标签: symfony yaml fosuserbundle

我在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。

由于

2 个答案:

答案 0 :(得分:0)

只需在安全性下将此添加到security.yml中,如下所示:

> security :
       access_control :
             - { path: ^/mysite/dashboard/, role: ROLE_ADMIN }

答案 1 :(得分:0)

您必须定义access_control