Laravel 3 Как использовать различные настройки сеанса в зависимости от URL

Мой сайт разработан с laravel-3 имеет два дифференцированных раздела:

  • общедоступный. Какой URL /
  • админ Какой URL /admin

В публичном разделе пользователи могут войти в систему, чтобы получить доступ к своим учетным записям, в то время как в администраторе только те пользователи с необходимыми разрешениями могут войти в систему.

Сейчас я не могу отличить сеанс, используемый в одном разделе, от другого, так как оба используют один и тот же session Параметры конфигурации, и, следовательно, любой, кто вошел в публичный раздел, может войти в админку.

Я думал о том, чтобы определить среду для admin раздел и определить различные значения для cookie а также path:

$environments = array(
// Local
   'admin' => array('http://localhost*/admin'),  // To handle anything inside section "admin"
   'local' => array('http://localhost*'),        // To handle everything else
);

Но потому что Request::detect_env() только проверяет эти правила с корнем URL, admin среда никогда не видна (laravel/core.php:183),

$root = Request::foundation()->getRootUrl();
$environment = Request::detect_env($environments, $root);

1 ответ

Я рекомендую не использовать среду для этой проблемы, а фильтр с подстановочными знаками для делегирования проверки:

Route::when('admin/*', 'login_admin_filter');

Но если вы действительно хотите использовать среду, я так понимаю документацию:

В вашем стартовом файле вы должны использовать замыкание:

$env = $app->detectEnvironment(function(){
    // This condition need to fail if the user isn't an administrator
    if($_SESSION['anything'] == 'admin' OR $every_thing_else){
        return 'admin';        
    } else {
        return 'production';
});
Другие вопросы по тегам