Access Denied Symfony 2

时间:2014-02-23 22:04:50

标签: php symfony

我一直在为当前正在构建的APP登录页面。它的运行检查很好但是当用户被重定向到/ secure_area时,我看到了当前的错误。

Access Denied 403 Forbidden - AccessDeniedHttpException 1 linked Exception:

AccessDeniedException »
到目前为止

我的代码

security.yml

security:
    encoders:
        Symfony\Component\Security\Core\User\User: plaintext
        Simple\ProfileBundle\Entity\User:
            algorithm:        sha1
            encode_as_base64: false
            iterations:       1

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_USER, ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

    providers:
        main:
            entity:
                class: Simple\ProfileBundle\Entity\User
                property: username

    firewalls:

        secured_area:
            pattern:    ^/
            anonymous: ~
            form_login:
                login_path:  login
                check_path:  login_check
        dev:
            pattern:  ^/(_(profiler|wdt)|css|images|js)/
            security: false


    access_control:
          - { path: ^/secure_area, roles: ROLE_ADMIN }

* routing_dev.yml *

index:
    pattern:   /
    defaults:  { _controller: SimpleProfileBundle:Security:login }


login:
    pattern:   /login
    defaults:  { _controller: SimpleProfileBundle:Security:login }


login_check:
    pattern:   /login_check

test_security:
    pattern: /secure_area
    defaults: {_controller: SimpleProfileBundle:Security:dumpString }

任何想法,对此框架都是新手,因此开始了解基础知识。

谢谢

1 个答案:

答案 0 :(得分:7)

拒绝访问意味着已记录的用户无权访问该资源。我认为您的用户没有具有ROLE_ADMINROLE_USER角色。如果您的用户已成功登录,则没有其他办法。

另一方面,为什么不使用FOSUserBundle?初学者更好地理解整个过程是如何工作的(只需阅读代码并且Security component documentation)。安全组件是最难理解的组件之一,因为一些“事物”发生在幕后,因此您需要完全理解组件的工作方式,以确保您不会犯任何愚蠢的错误。

真的,阅读仔细链接的文档将是一个完美的开始,暂时忽略教程。