Laravel-GET请求下载自动注销

时间:2018-12-19 00:57:46

标签: laravel routes middleware laravel-5.7

我有这样的下载文件链接:

<a href="{{ route('download_document', ['file' => 'agos.pdf']) }}" class=" text-info" style="cursor: pointer;">Download file</a>

路线

Route::group(['middleware' => ['web','auth','Admin','active'], 'prefix' => 'admin'], function(){

    // USERS
    Route::resource('user','UserController');
    Route::post('user/permissions/update','UserController@update_permission')->name('update_user_permissions');

    // MODULI
    Route::resource('module','ModuleController');

    // MODULISITICA
    Route::resource('modulistica','ModulisticaController');

Route::post('modulistica_cliente','ModulisticaController@update_client_module')->name('modulistica_post_cliente');
    Route::post('modulistica_prodotto','ModulisticaController@update_product_module')->name('modulistica_post_prodotto');
    Route::get('modulistica/download/cliente/{file}','ModulisticaController@download_cliente')->name('modulistica_download_cliente');
    Route::get('modulistica/download/{file}','ModulisticaController@download_module')->name('modulistica_download_module');
    Route::get('modulistica/download/prodotto/{file}','ModulisticaController@download_prodotto')->name('modulistica_download_prodotto');

    // UTILITY
    Route::post('utility/become/client','UtilityController@become_client')->name('utility_become_client');
    Route::resource('loan','LoanController');
    Route::get('area_download/document/{file}', function ($file){

        $path_file = storage_path().'/app/public/documents/'.$file;
        return response()->download($path_file, $file);

    })->name('download_document');

});

错误

到达“ https://mysite.it/admin/loan”视图时没有问题。当我单击GET链接时,它会将我重定向到LOGIN,但是作为我的用户通过登录名登录,会将我重定向到“ https://mysite.it/home”。

我做了一些测试以获取以下信息:

  • 请求未到达路线“ area_download / document / {file}”
  • 请求未到达“管理员”,“活动”中间件。

所以我的结论是问题出在中间件“ Web ”或“ Auth ”中,但我不明白为什么。如果有用,请放置整个路线组。如果您需要更多路线信息,我可以附上屏幕截图!

感谢您的帮助,谢谢!

2 个答案:

答案 0 :(得分:2)

如果您只允许不经过任何身份验证就下载文件, 您可以尝试以下方法:

刀片文件

<a href="{{ Storage::url($file_name) }}" download class=" text-info" style="cursor: pointer;">Download file</a>

此用户可以直接下载文件。只需在hrefdownload属性中添加文件路径。

,或者如果您不想验证用户身份,则删除中间件AUTH


您要验证用户身份,然后需要route:listmiddleware详细信息。

答案 1 :(得分:0)

我找到了解决方案!问题是我的获取请求是通过这种方式发出的。

https://mysite.it/admin/area_download/document/example.pdf

最终的PDF扩展名会导致系统错误。避免使用最终扩展名,例如:

https://mysite.it/admin/area_download/document/example.pdf/go

问题解决了!