0

当我转到 project/web/ 时,应用程序将我重定向到 te web/login,其中是用于登录的表单。

但是当我获得授权时,在提交表单后,我回到了项目/web/路径,但访问被拒绝异常。我的设置有什么问题,我无法弄清楚。

路由.yml

my_backend:
    resource: "@MyBackendBundle/Controller/"
    type:     annotation
    prefix:   /

fos_user_security:
    resource: "@FOSUserBundle/Resources/config/routing/security.xml"

安全.yml

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

providers:
    fos_userbundle:
        id: fos_user.user_provider.username

firewalls:
    main:
        pattern: ^/
        form_login:
            provider: fos_userbundle
            csrf_provider: form.csrf_provider
            login_path:                     /login
            use_forward:                    false
            check_path:                     /login_check
            post_only:                      true
            always_use_default_target_path: false
            default_target_path:            /
            target_path_parameter:          _target_path
            use_referer:                    false
            failure_path:                   null
            failure_forward:                false
            username_parameter:             _username
            password_parameter:             _password
            csrf_parameter:                 _csrf_token
            intention:                      authenticate
        logout:       true
        anonymous:    true
access_control:
    - { path: ^/login$, role: IS_AUTHENTICATED_ANONYMOUSLY }
    - { path: ^/, role: ROLE_ADMIN }
4

4 回答 4

0

谢谢你们的回答。我解决了这个问题。

在我创建并提升用户并promote --super command获得ROLE_SUPER_ADMIN角色之后。但是在我的应用程序的访问控制中,只有path: ^/, role: ROLE_ADMIN

所以我将它修改为ROLE_SUPER_ADMIN现在它可以在没有访问被拒绝异常的情况下工作。

但在这种情况下,我还有一个问题。现在,当我使用 app.php 版本时,一切正常(在/login页面登录后我被重定向到/)但是使用 app_dev.php 版本,登录后我被重定向到web/_wdt/TOKEN空页面。

于 2013-09-05T12:56:02.147 回答
0

是否ROLE_ADMIN与您的用户相关联?

另外,您是否尝试过删除anonymous配置参数或至少将其设置为默认值(“~”)?如果我理解正确,您的整个应用程序需要身份验证,但/login提供了输入用户凭据的方法。那是对的吗?

于 2013-09-04T21:35:54.853 回答
0

设置角色层次结构,以便超级管理员可以访问定义为管理员可访问的所有路由:

# app/config/security.yml
security:
    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: [ROLE_ADMIN, ROLE_ALLOWED_TO_SWITCH]

Symfony2 文档

于 2014-02-01T08:37:52.853 回答
0

在您进行身份验证后,您将被设置另一个角色,然后是 ROLE_ADMIN。请使用该站点的 app_dev.php 版本,在您访问拒绝访问页面后,它会在底部告诉您您的角色。

于 2013-09-05T05:06:28.747 回答