Pan*_*kaj 5 php laravel laravel-5 laravel-5.1 laravel-5.2
我在Laravel网站上有以下文件夹.
/存储/资产/媒体
此文件夹可以包含以下信息
/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',
));
});
Run Code Online (Sandbox Code Playgroud)
因此,在用户的会话未在浏览器中过期之前,没有人可以访问这些文件.
问题出现在Android中,因此现在没有人可以访问由于Auth Middleware而导致的文件.
有人可以建议这样的方法,可以通过基于令牌的身份验证(通过Android)和使用Auth Controller(通过网站)下载文件吗?
您不需要使用任何其他配置routes.php,如果您按照本指南操作,一切都会正常工作:
最简单的解决方案是创建一个名为列api_token的users表.然后,当尝试从Android设备访问资源时,只需添加?api_token=<token>到您的URL,其中<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标头来使用令牌进行授权:
标头示例:
Authorization: Bearer 123hello4secret
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3786 次 |
| 最近记录: |