我正在使用 Laravel (ocotber CMS) 开发我的项目,并使用Spatie URL Signer包来保护我的具有有限生命链接的文件。我将文件上传到按.htaccess
文件列入黑名单的受保护目录。
我的.htaccess:
RewriteRule ^storage/app/uploads/protected/.* index.php [L,NC]
我的文件上传到:
/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf
生成具有到期日期的链接的代码:
UrlSigner::sign('http://localhost:8888/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf');
生成的链接如下所示:
http://localhost:8888/storage/app/uploads/protected/58b/d45/789/58bd457897aab778152349.pdf?expires=1488905432&signature=fd82b06725096b8e6c43221a9616e420
我还添加了使用包的中间件来保护链接的路由处理代码。
Route::get('protected-route', ['middleware' => 'signedurl', function () {
return 'Hello secret world!';
}]);
但是生成的链接不可下载。我确实怀疑这是因为我将文件放在受保护的文件夹中。当我使用公用文件夹尝试此操作时,该文件可用。但是我的文件将没有任何保护。因为正如您在上面看到的,生成的链接包含我的文件夹的路径。