2013-11-07 6 views
3

Каков наилучший способ ограничить доступ к странице для проверки подлинности/разрешения? Я думал, используя Auth::user()->role для обнаружения, которое будет помещено в каждый раздел маршрута. Итак, есть ли лучший способ или лучшая практика для этого в Laravel 4?Laravel 4 доступ к странице на основе ролей на основе ролей

спасибо.

ответ

3

Вы можете попробовать что-то вроде этого (использовать фильтр для проверки роли)

Route::filter('role', function() 
{ 
    return Auth::user()->role; 
}); 

Тогда в маршрутах, вы можете использовать это (role) фильтр как

Route::get('protectedPage1', array('before'=>'role', function($role) { 
    if($role != 'admin') { 
     return Redirect::to('home'); 
    } 
})); 

Route::get('protectedPage2', array('before'=>'role', function($role) { 
    if($role != 'admin') { 
     return Redirect::to('home'); 
    } 
})); 

Обновление:

Route::filter('role', function() 
{ 
    if(Auth::user()->role != 'admin') { 
     return Redirect::to('home'); 
    } 
}); 

Route::get('protectedPage1', array('before'=>'role', function() { 
    // do your job 
})); 
+0

Эй, ваш пример, похоже, не работает. Как только фильтр вернет значение, он отобразит возвращенные данные на веб-странице и прекратит обработку остальной части кода. –

+0

@ user2977538, Проверьте обновленный ответ. –

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