2015-05-14 7 views
1

Мои два маршрута admin.media.begin-destroy 'и' admin.media.destroy 'терпят неудачу, если middleware =>' auth '.Невозможно добраться до маршрута через промежуточное промежуточное ПО для двух маршрутов

При попытке доступа к маршруту «admin.media.begin-destroy» мне будет предоставлена ​​страница входа в систему с контроллера проверки подлинности, и я не могу уйти от него, не пытаясь получить доступ к другой странице.

на моей машине развития она отлично работает как с и без Идентов промежуточного

Вот мои маршруты, которые защищены:

Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() { 
    Route::get('/', ['as' => 'admin.dashboard', 'uses' => 'Admin\[email protected]']);  

    Route::get('show/{show}/toggle',['as' => 'admin.show.toggle','uses'=>'Admin\[email protected]']); 
    Route::resource('show', 'Admin\ShowController'); 

    // The admin.media.begin-destroy and admin.media.destroy fails when middleware => 'auth' 
    Route::get('media/begin-destroy-ddd/{id}', ['as' => 'admin.media.begin-destroy', 'uses' => 'Admin\[email protected]']); 
    Route::resource('media', 'Admin\MediaController', ['only' => ['index', 'create', 'store', 'destroy']]); 

    Route::get('order', ['as'=> 'admin.order.index', 'uses' => 'Admin\[email protected]']); 
    Route::get('order/list-for-modification', ['as' => 'admin.order.list-for-modification', 'uses' => 'Admin\[email protected]']); 
    Route::get('order/{order}/begin-destroy', ['as' => 'admin.order.begin-destroy', 'uses' => 'Admin\[email protected]']); 
    Route::delete('order/{order}/destroy', ['as' => 'admin.order.destroy', 'uses' => 'Admin\OrderC[email protected]']); 
}); 

Метод управления для «admin.media.begin-уничтожить» и «admin.media.destroy» очень прост:

public function beginDestroy($filename) 
{ 
    return view('admin.media.begin-destroy', compact('filename')); 
} 

/** 
* Remove the specified resource from storage. 
* 
* @param int $filename 
* @return Response 
*/ 
public function destroy($filename) 
{ 
    Storage::disk('free-media')->delete($filename); 
    return redirect()->route('admin.media.index'); 
} 

Я очень озадачен, почему это не работает.

Edit! --- Попытка работать вокруг меня проблем я

/Переехал проблемные маршруты в свою собственную группу, без промежуточного слоя

Route::group(['prefix' => 'admin'], function() { 
    Route::get('media/begin-destroy/{id}', ['as' => 'admin.media.begin-destroy', 'uses' => 'Admin\[email protected]']); 
    Route::resource('media', 'Admin\MediaController', ['only' => ['index', 'create', 'store', 'destroy']]); 
}); 

/Добавлена ​​регистрация промежуточного слоя в Admin \ Конструктор Mediacontroller, я не могу добавить beginDestroy, потому что он не сработает по неизвестной причине public function __construct() { $ this-> middleware ('auth', ['except' => ['beginDestroy']]); }

// В beginDestroy, я затем проверить для пользователя, и пользователь не вошел в систему WTF

public function beginDestroy($filename) 
{ 
    if (Auth::check()) 
    { 
     return view('admin.media.begin-destroy', compact('filename')); 
    } 
    // I end up here. 
    return "Un-authorized"; 
} 

для данного конкретного случая использования, это нормально для меня, чтобы отключить проверку в beginDestroy , потому что в фактическом коде уничтожения auth работает снова, но что происходит?

ответ

1

Изменение маршрута для передачи имени файла с использованием старого старого знака вопроса сделало разницу!

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

// This works 
Route::get('media/begin-destroy', 
    ['as' => 'admin.media.begin-destroy', 
    'uses' => 'Admin\[email protected]']); 

// This does not work! 
// For reason beyond me, the 'auth' middleware fails here 
// and Auth::check() also fails 
// (Yes ofcourse I updated the signature accordingly in beginDestroy) 
Route::get('media/begin-destroy/{filename}', 
    ['as' => 'admin.media.begin-destroy', 
    'uses' => 'Admin\[email protected]']); 
Смежные вопросы