繁体   English   中英

访问/ admin,为什么任何登录到系统的用户都可以访问?

[英]Access to /admin, why any user logged into the system can access?

我有几天试图使这项工作顺利进行,但我不能因此作为最后的手段,希望任何人都能在这里为我提供帮助。 关键是我的应用程序,因为每个应用程序都有一个frontend ,系统中注册的任何用户都可以访问该frontend ,到目前为止,具有角色ROLE_ADMINbackend (否则应仅具有ROLE_ADMIN和没有角色或没有默认角色ROLE_USER的普通用户都不能登录。

我的问题是,无论我是否与没有管理员权限的任何普通用户签名(缺少ROLE_ADMIN )并访问URL app.php/admin他们都可以毫无问题地进入,这是完全错误的。 另一方面,如果我尝试使用ROLE_ADMIN与任何用户一起登录到frontendROLE_ADMIN可以毫无问题地进行此操作,这应该不会发生。

这是我的配置security.yml

security:
    encoders:
        FOS\UserBundle\Model\UserInterface: sha512

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username_email

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: form.csrf_provider
                login_path:  /login
                check_path:  /login_check
                default_target_path: home
                always_use_default_target_path: true
                use_referer: true
            logout:
                 path: fos_user_security_logout
                 target: /
                 invalidate_session: true
            anonymous: ~

    access_control:
        # Anonymous area
        - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/isLoggedIn$, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/registro, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/register, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/resetting, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/cedula, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/rif, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/correo, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/usuario, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/razon_social, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/registro_mercantil, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/padre, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/correo_alternativo, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/paises, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/estados, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/ciudades, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/municipios, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/parroquias, role: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/empresas, role: IS_AUTHENTICATED_ANONYMOUSLY }

        # Secured area
        - { path: ^/, role: ROLE_USER }
        - { path: ^/admin, role: ROLE_ADMIN }

我究竟做错了什么? 谁能给我任何建议吗?

我已经从上至下阅读了几次文档 ,但没有弄错我做错了什么

访问控制的工作原理与路由非常相似,第一个匹配是执行的匹配。

这意味着对/ admin的请求将与以下内容匹配:

- { path: ^/, role: ROLE_USER }

您应该将/ admin规则放在首位。 另外,我发现有更好的做法来尽可能保护控制器的安全(这可以避免此类常见问题): http : //symfony.com/doc/current/book/security.html#securing-controllers-and-other-码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM