2014-10-10 41 views
0

我正在開發一個應用程序與Silex與Symfony安全組件。匿名用戶應該能夠訪問除管理部分以外的每個應用程序點(^/admin)。匿名可以看到保護區

我在做什麼錯?匿名仍然可以訪問管理員部分。我已經跟着其他一些答案來達到這一點,但現在我被卡住了。

$app['security.firewalls'] = array 
(
    'general' => array 
    (
     'pattern' => '^/', 
     'anonymous' => true, 
     'form' => array 
     (
      'login_path' => '/login', 
      'check_path' => '/admin/login_check', 
      'default_target_path' => '/admin', 
      'always_use_default_target_path' => true, 
     ), 
     'logout' => array 
     (
      'logout_path' => '/admin/logout', 
      'target_url' => '/' 
     ), 
     'users' => $app->share(function() use ($app) { 
      return new UserProvider($app['db']); 
     }) 
    ) 
); 

// @todo - find out why anonymous can see admin panel 
$app['security.access_control'] = array 
(
    array('path' => '^/login', 'role' => 'IS_AUTHENTICATED_ANONYMOUSLY'), 
    array('path' => '^/admin', 'role' => 'ROLE_USER'), 
); 

$app['security.role_hierarchy'] = array 
(
    'ROLE_ADMIN' => array('ROLE_USER'), 
); 

回答

0

我已經改變了security.access_control(現在似乎忽略)到security.access_rules(它之前拋出的「access_rules」屬性是未知屬性的錯誤),現在它似乎工作:

$app['security.access_rules'] = array ( array('^/admin', 'ROLE_USER'), );

0

看看文檔 http://symfony.com/doc/current/book/security.html#basic-example-http-authentication

'access_control' => array(
    array('path' => '^/admin/', 'role' => 'ROLE_ADMIN'), 
    // Include the following line to also secure the /admin path itself 
    // array('path' => '^/admin$', 'role' => 'ROLE_ADMIN'), 
), 

其要麼^ /管理/或^/ADMIN $沒有^ /管理

+0

以上都沒有工作。在管理控制器'$ this-> app ['security'] - > getToken() - > getUser()'輸出'anon.'的init動作中。 ROLE_USER和ROLE_ADMIN應該能夠訪問/ admin,但匿名用戶不能。 – qzminski 2014-10-21 16:34:33

相關問題