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