gpt4 book ai didi

php - 仅通过 Auth 中间件和基于 token 的身份验证访问存储文件夹中的文件

转载 作者:可可西里 更新时间:2023-11-01 13:49:23 25 4
gpt4 key购买 nike

我的 Laravel 网站中有以下文件夹。

/storage/Asset/Media

这个文件夹可以有如下信息

/storage/Asset/Media/1/abc.png

/storage/Asset/Media/2/abc.png

这里的 1 或 2 是文件夹名称。

我有以下代码来保护文件夹,这样没有人可以在未经身份验证的情况下访问该文件夹

Route::group(['middleware' => ['web', 'auth']], function () {
Route::get('/storage/Asset/Media/{ID}/{eded}', array(
'as' => 'Files',
'uses' => 'User\Account\Media\MediaController@DownloadMedia',
));
});

因此,在浏览器中用户的 session 未过期之前,任何人都无法访问这些文件。

问题出在 Android 中,因此由于 Auth 中间件,现在没有人可以访问这些文件。

有人可以建议这样的方法,即可以通过基于 token 的身份验证(通过 Android)以及使用 Auth Controller(通过网站)访问下载文件吗?

最佳答案

您不需要在 routes.php 中使用任何其他配置,如果您遵循本指南,一切都会很好:

最简单的解决方案是创建名为 api_token 的列是users table 。然后当尝试从 Android 设备访问资源时,只需添加 ?api_token=<token>到您的网址,其中 <token>api_token在你的栏目 users表。

例如: domain.com/storage/Asset/Media/1/2?api_token=123hello4secret

系统会尝试用api_token == 123hello4secret搜索用户记录, 所以就把 123hello4secret进入您的用户 api_token字段。


如果你想知道为什么你应该 api_token作为列名,答案在这里:https://github.com/laravel/framework/blob/2a38acf7ee2882d831a3b9a1361a710e70ffa31e/src/Illuminate/Auth/TokenGuard.php#L45 Laravel 将尝试使用 api_token 授权您如果在请求字段中找到它。


您还可以使用 HTTP header 通过 token 进行授权:
header 示例:

Authorization: Bearer 123hello4secret

关于php - 仅通过 Auth 中间件和基于 token 的身份验证访问存储文件夹中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372317/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com