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';
});