FOSUserBundle允许' Anon'用户访问`/ admin`

时间:2015-09-26 11:07:59

标签: symfony admin fosuserbundle

我正在使用FOSUserBundle并在我的数据库中成功创建用户。但是,我尝试通过Symfony security漫游来尝试登录用户并且只有ROLE_ADMIN个用户访问/admin

然而,即使没有考虑过记录用户,当我尝试访问localhost/app_dev.php/admin时,我能够以" Anon"用户。下面是我的security.yml和控制器文件:

应用程序/配置/ security.yml

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

    role_hierarchy:
        ROLE_ADMIN:       ROLE_USER
        ROLE_SUPER_ADMIN: ROLE_ADMIN

    providers:
        fos_userbundle:
            id: fos_user.user_provider.username

    firewalls:
        dev:
            pattern: ^/(_(profiler|wdt)|css|images|js)/
            security: false

        main:
            pattern: ^/
            form_login:
                provider: fos_userbundle
                csrf_provider: security.csrf.token_manager 

            logout:       true
            anonymous:    true

    access_control:
        - { path: ^/admin/, role: ROLE_ADMIN }

的src /的appbundle /控制器/ DefaultController.php

class DefaultController extends Controller
{
    /**
     * @Route("/admin", name="admin")
     */
    public function AdminAction(Request $request)
    {
        return $this->render('default/admin.html.twig', array(
            'title' => 'Welcome Admin!!'
        ));
    }
}

1 个答案:

答案 0 :(得分:1)

我不熟悉FOSUserBundle但是access_control条目用于路径/admin/ - 请注意尾部斜杠,而您的示例localhost/app_dev.php/admin则不然。如果您从access_control条目中删除该条目或更改路线,则应该按预期工作。

E.g。

access_control:
    - { path: ^/admin, role: ROLE_ADMIN }