Laravel:允许通过api(REST)仅为已登录用户下载

时间:2017-12-12 09:45:16

标签: laravel rest file authentication laravel-5

对于我的应用,用户可以通过api身份验证('middleware' => ['auth:api']中的api.php)进行登录,并且有些图片可以为已登录的用户显示。

但是,当我在'middleware' => ['auth:api']中使用web.php时,系统会识别用户未被记录。

如何保护图像并向通过ajax呼叫记录的用户显示?谢谢!

1 个答案:

答案 0 :(得分:0)

配置apache以禁止直接访问。

Alias /filepath "/data/filepath"
<Directory /data/filepath>
            Order allow,deny
            Deny from all
</Directory>

在写入文件之前检查用户。

$local_file = 'local file path';
$download_file = 'download file name';
$download_rate = 20.5;
if($isAuthorized)
{
    if(file_exists($local_file) && is_file($local_file)) {
        header('Cache-control: private');
        header('Content-Type: application/octet-stream');
        header('Content-Length: '.filesize($local_file));
        header('Content-Disposition: filename='.$download_file);
        flush();
        $file = fopen($local_file, "r");
        while (!feof($file)) {
            print fread($file, round($download_rate * 1024));
            flush();
            ob_flush();
            sleep(1);
        }
        fclose($file);
    }
}