2013-11-22 14 views
0

Мой сайт разработан с laravel-3 имеет две дифференцированные секции:Laravel 3 Как использовать различные параметры сеанса в зависимости от URL

  • общественного. Какой адрес: /
  • администратор. Какой url is /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

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

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

Я предполагаю, что вы вызываете 'Auth :: пытаться()' внутри 'login_admin_filter'? Это заканчивается использованием параметров сеанса, которые я пытаюсь настроить. –

+0

Я проверяю: 'Auth :: check()' внутри фильтра. Если это не удается, я перенаправляю форму входа, которые пытаются подключить пользователя с помощью попытки(). Трудность будет заключаться в том, чтобы различать 2 вида логина (1 адми и 1 нормальный пользователь), но я думаю, что это базовая функциональность. Я не эксперт Laravel, но это похоже на то, что я понял реализацию Auth :: – Fractaliste

+0

О, в фильтре вы должны проверить, что Auth :: check() - это истина и если у него хорошие разрешения (с помощью [Auth :: getUser ] (http://laravel.com/api/source-class-Illuminate.Auth.Guard.html#502-510)), то вы можете переключиться в зависимости от случаев. – Fractaliste

 Смежные вопросы

  • Нет связанных вопросов^_^