Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/249.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问/admin,为什么任何登录到系统的用户都可以访问?_Php_Security_Symfony_Fosuserbundle_Symfony Security - Fatal编程技术网

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

Php 访问/admin,为什么任何登录到系统的用户都可以访问?,php,security,symfony,fosuserbundle,symfony-security,Php,Security,Symfony,Fosuserbundle,Symfony Security,我有好几天的时间来做这件事,但我做不到,所以作为最后的手段,我希望任何人都能在这里帮助我。关键是我的应用程序,因为每个应用程序都有一个前端,系统中注册的任何用户都可以访问该应用程序,但迄今为止拥有role\u ADMIN角色和后端角色的用户除外,应仅对具有角色\u ADMIN的用户具有访问权限,而不拥有角色或具有默认角色\u用户的普通用户也不能登录 我的问题是,不管怎样,如果我与任何没有管理员权限(缺少ROLE\u admin)和URLapp.php/admin访问权限的普通用户登录,他们就可以

我有好几天的时间来做这件事,但我做不到,所以作为最后的手段,我希望任何人都能在这里帮助我。关键是我的应用程序,因为每个应用程序都有一个
前端
,系统中注册的任何用户都可以访问该应用程序,但迄今为止拥有
role\u ADMIN
角色和
后端
角色的用户除外,应仅对具有
角色\u ADMIN
的用户具有访问权限,而不拥有角色或具有默认角色\u用户的普通用户也不能登录

我的问题是,不管怎样,如果我与任何没有管理员权限(缺少
ROLE\u admin
)和URL
app.php/admin
访问权限的普通用户登录,他们就可以毫无问题地进入,这是完全错误的。另一方面,如果我尝试与任何具有
角色的用户一起登录到
前端
,则管理员
可以做到这一点,而不会出现任何问题

这是我的配置
安全性。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规则放在第一位。此外,我发现最好的做法是尽可能地保护控制器(这避免了这些常见问题):

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

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

- { path: ^/, role: ROLE_USER }

你应该把/admin规则放在第一位。此外,我发现最好的做法是尽可能地保护控制器(这避免了这些常见问题):

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

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

- { path: ^/, role: ROLE_USER }

你应该把/admin规则放在第一位。此外,我发现最好的做法是尽可能地保护控制器(这避免了这些常见问题):

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

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

- { path: ^/, role: ROLE_USER }


你应该把/admin规则放在第一位。此外,我发现在任何时候保护控制器都是一种更好的做法(这可以避免像这样的常见问题):

我假设正则表达式中的空格是多少?你为什么要把它们放在这里?@Gerry在我的
security.yml
中复制粘贴时输入一个错误,它们不存在
^/admin
应该在
^/
之前。所有路由都被第一个路由捕获,因此所有用户都可以访问之前未捕获的路由。请输入您的确切security.yml。@Gerry完成,我修复了代码我假设您的正则表达式中有空格?你为什么要把它们放在这里?@Gerry在我的
security.yml
中复制粘贴时输入一个错误,它们不存在
^/admin
应该在
^/
之前。所有路由都被第一个路由捕获,因此所有用户都可以访问之前未捕获的路由。请输入您的确切security.yml。@Gerry完成,我修复了代码我假设您的正则表达式中有空格?你为什么要把它们放在这里?@Gerry在我的
security.yml
中复制粘贴时输入一个错误,它们不存在
^/admin
应该在
^/
之前。所有路由都被第一个路由捕获,因此所有用户都可以访问之前未捕获的路由。请输入您的确切security.yml。@Gerry完成,我修复了代码我假设您的正则表达式中有空格?你为什么要把它们放在这里?@Gerry在我的
security.yml
中复制粘贴时输入一个错误,它们不存在
^/admin
应该在
^/
之前。所有路由都被第一个路由捕获,因此所有用户都可以访问之前未捕获的路由。请输入您的确切security.yml。然后。@Gerry完成,我修复了代码。安全控制器的问题是,我正在使用捆绑包,不知道如何使用它来实现,如果你知道的话,可以让我know@ReynierPM:防火墙是基于应用程序的,因此它应该与EasyAdminBundle或任何其他捆绑包一起使用。@A.L您对防火墙的定义是基于应用程序的?你能提供一些使用
EasyAdminBundle
的例子吗?我不知道EasyAdminBundle,但我使用了SonataAdminBundle,它创建了一个
/admin
URL,所以我只需要添加
-{path:^/admin,role:role\u admin}
security.yml
中的
以启用防火墙。安全控制器的问题是,我正在使用捆绑包,不知道如何使用它来实现这一点,如果您知道,可以让我知道know@ReynierPM:防火墙基于应用程序,因此,它应该与EasyAdminBundle或任何其他捆绑包一起使用。@A.L您所说的防火墙是基于应用程序的吗?你能提供一些使用
EasyAdminBundle
的例子吗?我不知道EasyAdminBundle,但我使用了SonataAdminBundle,它创建了一个
/admin
URL,所以我只需要添加
-{path:^/admin,role:role\u admin}
security.yml
中的
以启用防火墙。安全控制器的问题是,我正在使用捆绑包,不知道如何使用它来实现这一点,如果您知道,可以让我知道know@ReynierPM:防火墙基于应用程序,因此,它应该与EasyAdminBundle或任何其他捆绑包一起使用。@A.L您所说的防火墙是基于应用程序的吗?你能提供一些使用
EasyAdminBundle
的例子吗?我不知道EasyAdminBundle,但我使用了SonataAdminBundle,它创建了一个
/admin
URL,所以我只需要添加
-{path:^/admin,role:role\u admin}
security.yml
中的
以启用防火墙。安全控制器的问题是,我正在使用捆绑包,不知道如何使用它来实现这一点,如果您知道,可以让我知道know@ReynierPM:防火墙基于应用程序,因此它