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 a s3 resource but have the URL expire in 5 seconds.
public function download(File $file){ // Initiate file download by redirecting to a temporary s3 URL that expires in 5 seconds return redirect()->to( Storage::disk('s3')->temporaryUrl($file->name, now()->addSeconds(5)) );}
Tip given by @Philo01