我在laravel 5.2中的新内容,我只想问你如何能够抓住来自uploads
的链接:http://sitename.com/uploads/59128.txt
?如果他们试图访问来自uploads/{any filename}
的任何路由或链接,我想将它们重定向到登录页面。
答案 0 :(得分:1)
是的,您可以通过使用auth中间件保护您的路线来实现,
制作一个小FileController
class FileController extends Controller {
public function __construct()
{
$this->middleware('auth');
}
public function getFile($filename)
{
return response()->download(storage_path($filename), null, [], null);
}
}
然后在routes.php
Route::get('file/{filename}', 'FileController@getFile')->where('filename', '^[^/]+$');
就是这样。现在,经过身份验证的用户可以通过调用http://yoursite.com/file/secret.jpg从存储文件夹(但不是其子文件夹)下载文件。添加您可以在图像标记的src属性中使用此URL。
回答原始source!
答案 1 :(得分:0)
@xerwudjohn简单你不能。 当此文件位于公共文件夹中时,每个人都可以在登录时以白名方式访问它。 我尝试了几分钟的一种方法,创建了一条新路线:
Route::group(['middleware' => ['web', 'auth']], function () {
Route::get('/download/{id}', 'DownloadController@showFile');
});
在DonwloadController中创建函数showFile
public function showFile($id)
{
return redirect('/image/'.$id.'.txt');
}
或使用Model从任何表中读取uniqueIds并获取realfile名称。 干杯