You can use temporary download URLs for your cloud storage resources to prevent unwanted access. For example, when a user wants to download a file, we redirect to an s3 resource but have the URL expire in 5 seconds
public function download(File $file) { return redirect()->to( Storage::disk('s3')->temporaryUrl($file->name, now()->addSeconds(5)) ); }