我的两条路线' admin.media.begin-destroy'和' admin.media.destroy'中间件=>时失败' AUTH'
当试图访问该路线时,管理员#media.begin-destroy'我将从身份验证控制器获得登录页面,如果不尝试访问其他页面,我无法摆脱这种情况。
在我的开发机器上,无论是否使用auth中间件都能正常工作
以下是受保护的路线:
Route::group(['prefix' => 'admin', 'middleware' => 'auth'], function() {
Route::get('/', ['as' => 'admin.dashboard', 'uses' => 'Admin\DashboardController@index']);
Route::get('show/{show}/toggle',['as' => 'admin.show.toggle','uses'=>'Admin\ShowController@toggle']);
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\MediaController@beginDestroy']);
Route::resource('media', 'Admin\MediaController', ['only' => ['index', 'create', 'store', 'destroy']]);
Route::get('order', ['as'=> 'admin.order.index', 'uses' => 'Admin\OrderController@index']);
Route::get('order/list-for-modification', ['as' => 'admin.order.list-for-modification', 'uses' => 'Admin\OrderController@listModify']);
Route::get('order/{order}/begin-destroy', ['as' => 'admin.order.begin-destroy', 'uses' => 'Admin\OrderController@beginDestroy']);
Route::delete('order/{order}/destroy', ['as' => 'admin.order.destroy', 'uses' => 'Admin\OrderController@destroy']);
});
' admin.media.begin-destroy'的控制器方法和' 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');
}
我很困惑为什么这不起作用。
编辑!--- 试着解决我的问题
/将有问题的路由移动到没有中间件的自己的组中
Route::group(['prefix' => 'admin'], function() {
Route::get('media/begin-destroy/{id}', ['as' => 'admin.media.begin-destroy', 'uses' => 'Admin\MediaController@beginDestroy']);
Route::resource('media', 'Admin\MediaController', ['only' => ['index', 'create', 'store', 'destroy']]);
});
/在Admin \ Mediacontroller构造函数中添加了中间件注册,我无法添加beginDestroy,因为它会因为未知原因而失败 公共函数__construct() { $ this->中间件(' auth',['除了' => [' 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";
}
对于这个特殊用例,我可以禁用checkDestroy中的检查,因为在实际的销毁代码中,auth再次工作,但是发生了什么?
答案 0 :(得分:1)
更改路线以使用旧的问号传递文件名,这有所不同!
这实际上更像是一个解决方法,而不是一个答案,而且我仍然不知道为什么它不会以其他方式起作用,无论如何,这是我的解决方法,这就是诀窍。
Parent