2017-08-29 80 views
0

登錄頁這是我的防火牆代碼如何重定向「拒絕訪問」中的Silex

$app['security.firewalls']=[ 
    'secured'=>[ 
     'pattern' => '/', 
     'anonymous' => true, 
     'http'=>true, 
     'form' => array('login_path' => '/login', 'check_path' => '/secured/login_check'), 
     'logout' => array('logout_path' => '/secured/logout', 'invalidate_session' => true), 
     'users'=>$users 
    ] 
]; 
$app['security.access_rules']=[ 
    ["^/admin", "ROLE_ADMIN"] 
]; 

當用戶沒有角色admin訪問管理頁面,如何將用戶重定向到登錄頁面?

我有一個在管理控制器代碼沒有訪問規則測試:

if($app['security.authorization_checker']->isGranted('ROLE_ADMIN')){ 
     // ... 
     // ... 
     // ... 
    } 
else return $app->redirect($app->url('login')); 

但問題時,我用這個方法是,它會重定向到主頁,而不是以前的頁面。如何使登錄頁面在成功登錄檢查後重定向到上一頁而不是主頁?

回答

0

嘗試always_use_default_target_pathuse_referer參數添加到安全配置:

$app['security.firewalls']=[ 
    'secured'=>[ 
     ... 
     'form' => array(
      'login_path' => '/login', 
      'check_path' => '/secured/login_check', 
      'always_use_default_target_path' => false, 
      'use_referer' => true 
     ), 
     ... 
    ] 
]; 

爲什麼要使用2個入口點登錄? httpform