如何捕获来自上传/ laravel 5的任何链接?

时间:2016-04-20 21:54:25

标签: laravel authentication routes laravel-5.2

我在laravel 5.2中的新内容,我只想问你如何能够抓住来自uploads的链接:http://sitename.com/uploads/59128.txt?如果他们试图访问来自uploads/{any filename}的任何路由或链接,我想将它们重定向到登录页面。

2 个答案:

答案 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名称。 干杯