Luc*_*aga 5 php authentication storage acl laravel
在我的项目中,我为我的控制器和路由实现了 auth 和 ACL。我有一个文件上传系统,只有在用户登录时才能访问。它工作正常。
我的问题出在上传的文件上。如果有文件 URL,用户可以访问任何文件。如何对上传的文件实施身份验证?
我尝试使用路由,但是当通过浏览器访问我的文件时,该文件显示为好像没有拦截此 URL 的路由。
我用过这个代码:
Route::get('/storage/document/3/4a15c1ab060be8f35.png', function () {
return 'ok';
});
Run Code Online (Sandbox Code Playgroud)
如何对存储上的特定文件夹实施身份验证?谢谢!
Ste*_*ake 11
如果您想根据某种权限限制每个用户对文件的访问,您需要自己构建该权限逻辑(StackOverflow 不会为您完成工作),但是为了回答这个问题,假设您已经拥有该权限系统,并且为了检查用户是否具有访问权限,我们的功能hasAccessToFile基本上只是根据您的业务逻辑需要进行查找。
您可以提供单个文件,而不是公开提供所有文件,这是一个非常简短的示例:
Route::get('files/{pathToFile}', function($pathToFile) {
if (auth()->user()->hasAccessToFile($pathToFile)) {
return response()->file($pathToFile);
} else {
return 'Nope, sorry bro, access denied!';
}
});
Run Code Online (Sandbox Code Playgroud)
请参阅文件响应文档。
如果您需要提供文件的下载而不是提供文件,类似地:
Route::get('files/{pathToFile}', function($pathToFile) {
if (auth()->user()->hasAccessToFile($pathToFile)) {
return response()->download($pathToFile);
} else {
return 'Nope, sorry bro, access denied!';
}
});
Run Code Online (Sandbox Code Playgroud)
请参阅文件下载文档。
| 归档时间: |
|
| 查看次数: |
7993 次 |
| 最近记录: |