Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.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
Security Symfony 4:无法访问管理员角色。拒绝访问_Security_Roles_Symfony4 - Fatal编程技术网

Security Symfony 4:无法访问管理员角色。拒绝访问

Security Symfony 4:无法访问管理员角色。拒绝访问,security,roles,symfony4,Security,Roles,Symfony4,我正在学习Symfony 4,并尝试使用Symfony 4文档创建应用程序 我确实按照这个来做管理员角色 但是当我访问路径/admin时,总是拒绝访问。 我在Symfony文档页面和StackOverflow上读了很多文章,但没有找到解决方法。这是我的背景 //config/packges/security.yaml security: encoders: App\Entity\User: algorithm: bcrypt provi

我正在学习Symfony 4,并尝试使用Symfony 4文档创建应用程序

我确实按照这个来做管理员角色

但是当我访问路径
/admin
时,总是
拒绝访问。

我在Symfony文档页面和StackOverflow上读了很多文章,但没有找到解决方法。这是我的背景

//config/packges/security.yaml

security:

    encoders:
        App\Entity\User:
            algorithm: bcrypt
    providers:
        our_db_provider:
            entity:
                class: App\Entity\User
        in_memory:
            memory:
                users:
                    admin:
                        password: admin123
                        roles: 'ROLE_ADMIN'
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern:    ^/
            http_basic: ~
            provider: our_db_provider
            form_login:
              login_path: login
              check_path: login
              default_target_path: index
              always_use_default_target_path: true

            logout:
              path:   /logout
              target: /index

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_ADMIN }
下面是Symfony调试日志:

未捕获的PHP异常Symfony\Component\Security\Core\Exception\accessdeniedeexception:“拒绝访问”。位于C:\xampp\htdocs\aimer mvc\vendor\Symfony\Security\Http\Firewall\AccessListener.PHP第68行


请帮帮我。非常感谢你

如果你想用admin/admin123测试你的应用程序,你必须允许防火墙中的
内存
提供程序:

仅适用于http_basic:

security:

    encoders:
        App\Entity\User:
            algorithm: bcrypt
    providers:
        our_db_provider:
            entity:
                class: App\Entity\User
        in_memory:
            memory:
                users:
                    admin:
                        password: admin123
                        roles: 'ROLE_ADMIN'
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern:    ^/
            http_basic:
                provider: in_memory
            provider: our_db_provider
            form_login:
              login_path: login
              check_path: login
              default_target_path: index
              always_use_default_target_path: true

            logout:
              path:   /logout
              target: /index

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_ADMIN }
对于form_登录:

security:

    encoders:
        App\Entity\User:
            algorithm: bcrypt
    providers:
        both_providers:
            chain:
                providers: [in_memory, our_db_provider]
        our_db_provider:
            entity:
                class: App\Entity\User
        in_memory:
            memory:
                users:
                    admin:
                        password: admin123
                        roles: 'ROLE_ADMIN'
    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false
        main:
            pattern:    ^/
            http_basic: ~
            provider: both_providers
            form_login:
              login_path: login
              check_path: login
              default_target_path: index
              always_use_default_target_path: true

            logout:
              path:   /logout
              target: /index

    access_control:
        - { path: ^/login, roles: IS_AUTHENTICATED_ANONYMOUSLY }
        - { path: ^/admin, roles: ROLE_ADMIN }

请参阅示例…

我尝试将其作为您的代码进行修复,但它仍然没有更改。无论如何,谢谢你。我将尝试一些方法:))您在测试中使用什么登录名/密码?我从/index访问角色/管理员,但访问被拒绝。即使登录与否,它仍然拒绝访问。非常感谢您的帮助。当我只使用提供者:in_memory时,我可以访问管理员角色,但当使用chain_providers包括in_memory user和user load from database时,请访问Deneid。非常感谢@AlterPHP的帮助。最后,我找到了解决这个问题的方法。在数据库/app\u用户表/role列中,可以手动编辑从role\u user到role\u ADMIN的用户角色。