2015-09-26 90 views
0

我正在使用FOSUserBundle并在我的数据库中成功创建用户。但是,我试图通过遵循Symfony security演练登录用户,并且只有ROLE_ADMIN用户访问/admin允许'Anon'用户访问'/ admin`的FOSUserBundle

但是,即使没有想到登录用户,当我尝试访问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

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

E.g.

access_control: 
    - { path: ^/admin, role: ROLE_ADMIN } 
相关问题