Сбой аутентификационного фильтра Laravel на производственном сервере

Я использую фреймворк Laravel 4 со стандартной встроенной поддержкой аутентификации. В локальной среде все работает хорошо (MAMP, OSx), но на моем производственном сервере (стандартный образ Digital Ocean с Ubuntu, Apache, Php 5.5.9) фильтр проверки подлинности завершается неудачно и позволяет получить доступ без аутентификации.

routes.php:

Route::group(['before'=>'auth'], function(){
Route::get('admin', array('uses' => 'AdminController@home'));
Route::get('admin/dashboard', function(){
return Redirect::to('admin');
});

Route::post('payment/ok', array('uses' => 'PaymentController@ok'));
Route::post('payment/fail', array('uses' => 'PaymentController@fail'));
Route::get('admin/makeDMS/{id}', array('uses' => 'PaymentController@makeDMStransaction'));
Route::get('admin/products', array('uses' => 'AdminController@products'));
Route::get('admin/product/{id}', array('uses' => 'AdminController@product'));
Route::get('admin/orders', array('uses' => 'AdminController@orders'));
Route::get('admin/order/{id}', array('uses' => 'AdminController@order'));
Route::post('admin/setOrderStatus', array('uses' => 'AdminController@setOrderStatus'));
Route::post('admin/updateProduct', array('uses' => 'AdminController@updateProduct'));
Route::get('admin/transactions', array('uses' => 'AdminController@transactions'));
});

filters.php:

Route::filter('auth', function()
{
if (Auth::guest())
{
if (Request::ajax())
{
return Response::make('Unauthorized', 401);
}
else
{
return Redirect::guest('login');
}
}
});Route::filter('auth.basic', function()
{
return Auth::basic();
});

Route::filter('guest', function()
{
if (Auth::check()) return Redirect::to('/');
});

Я пытался защитить нужные маршруты как с Route::group и в конструкторе контроллера, но вывод тот же: вход с хорошими учетными данными работает, пользователи с неверными учетными данными не могут войти, но группа маршрутов, которая должна быть защищена, доступна для неаутентифицированных пользователей.

Я обнаружил, что php в быстром режиме CGI может производить такое поведение, но вот мой sudo apachectl -M выход:

Loaded Modules:
core_module (static)
so_module (static)
watchdog_module (static)
http_module (static)
log_config_module (static)
logio_module (static)
version_module (static)
unixd_module (static)
access_compat_module (shared)
alias_module (shared)
auth_basic_module (shared)
authn_core_module (shared)
authn_file_module (shared)
authz_core_module (shared)
authz_host_module (shared)
authz_user_module (shared)
autoindex_module (shared)
deflate_module (shared)
dir_module (shared)
env_module (shared)
filter_module (shared)
mime_module (shared)
mpm_prefork_module (shared)
negotiation_module (shared)
php5_module (shared)
rewrite_module (shared)
setenvif_module (shared)
status_module (shared)

0

Решение

Хорошо, я нашел решение. Как всегда, RTM …

Моя среда была установлена ​​как «тестирование», которое зарезервировано для модульного тестирования, а руководство красиво говорит:

Примечание. Фильтры маршрутов отключены в среде тестирования. к
включите их, добавьте Route :: enableFilters () к вашему тесту.

Я изменил переменную среды на «производство», и теперь все работает отлично.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]