Laravel 302用于使用Auth中间件进行路由

在我的Laravel 6应用程序中,文件存储在storage/uploads文件夹中,因此您无法创建指向它们的直接链接。要访问文件,有一种方法可以从控制器调用该方法。

Route::middleware(['auth'])->group(function () {
    Route::get('uploads/{filename}','UploadController@getFile')->name('uploads.get');
}

UploadController@getFile方法访问storage/uploads并下载文件。

public function getFile(string $filename)
{
    return response()->download(storage_path('uploads/' . $filename));
}

如果使用中间件auth,则只会下载一个代码为200的文件,而返回其他文件的代码为302

view.blade.php

...

@foreach($user->files as $file)
    <img src="{{ route('uploads.get',$file) }}" class="img-thumbnail">
@endforeach

...

刷新页面时,将再加载一个文件。将它们存储在缓存中之后,所有文件都将成功下载,代码为200。

如果您删除中间件auth,则可以解决此问题。

Route::get('uploads/{filename}','UploadController@getFile')->name('uploads.get');

我在做什么错了?

更新

如果我使用函数response()->file()而不是response()->download(),则结果相同。

有趣的是,所有带有代码302的响应都将发起对/login的请求。这些请求中的一些以代码200返回,其他请求也以代码302返回。该应用程序使用标准的Laravel身份验证系统。

hhqqhhhhqqhh 回答:Laravel 302用于使用Auth中间件进行路由

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/3138363.html

大家都在问