我用Laravel后端和React前端制作了一个应用程序,并使用基于令牌的身份验证。用户和管理员可以上传文件(例如。图像),它们存储在存储文件夹中。我基于Laravel文档创建了这个解决方案:https://laravel.com/docs/10.x/filesystem.我创建了sym链接与'php artisan storage:link'.
我的问题是,上传的文件是公开访问通过链接。我想保护这些文件,使它们只对用户可用。
我怎么能保证呢?
我试着把图像放在不同的文件夹中(例如:uploads).我试图使用“file($path)”访问文件,但它只适用于“storage/images/1697829128.jpg”,而不是“uploads/images/1697829128.jpg”。
1条答案
按热度按时间7tofc5zh1#
当您在没有'public'的存储下创建一个文件夹时,该文件夹在浏览器URL中将不是公共的。因此,在公共目录外创建一个示例文件夹来存储您的私人文件。现在,配置Laravel应用程序,将这个新文件夹用作私人文件的磁盘。你可以在这里做这个./filesystems.php(可以根据你的喜好改变)
要提供对这些映像的访问,请创建一个路由和控制器方法,用于获取映像并将其提供给经过身份验证的用户。在你的控制器中,你可以使用response()->download()方法: