在我的项目中,我已经为控制器和路由实现了auth和ACL。我只有在登录用户后才能访问文件上传系统。很好。
我的问题是上载的文件。如果有文件URL,则用户可以访问任何文件。如何对上传的文件实施身份验证?
我尝试使用路由,但是当通过浏览器访问我的文件时,该文件显示为好像没有路由拦截此URL。
我使用了以下代码:
android.permission.ACCESS_FINE_LOCATION
如何在存储中的特定文件夹上实现身份验证?谢谢!
答案 0 :(得分:4)
如果要基于某种权限来限制每个用户对文件的访问,则需要自己构建该权限逻辑(StackOverflow不会为您完成工作),但是为了回答这个问题,我们假设您已经拥有该权限系统,并且为了检查用户是否具有访问权限,我们的功能是hasAccessToFile
,它基本上只是根据您的业务逻辑要求进行查找。
您可以提供单个文件,而不是公开提供所有文件,这是一个非常简单的示例:
Route::get('files/{pathToFile}', function($pathToFile) {
if (auth()->user()->hasAccessToFile($pathToFile)) {
return response()->file($pathToFile);
} else {
return 'Nope, sorry bro, access denied!';
}
});
请参阅File Responses文档。
如果您需要提供文件的下载而不是提供文件,则类似:
Route::get('files/{pathToFile}', function($pathToFile) {
if (auth()->user()->hasAccessToFile($pathToFile)) {
return response()->download($pathToFile);
} else {
return 'Nope, sorry bro, access denied!';
}
});
请参阅File Downloads文档。
答案 1 :(得分:0)
您可以参考我的答案here。该过程包括创建一个新的存储磁盘,将文件保存在<script src="assets/plugins/jquery.min.js" type="text/javascript"></script>
上(不在公共文件夹中),并在将文件提供给用户之前验证请求。