Ruby on rails Rails Carrierwave雾隐藏s3目录

Ruby on rails Rails Carrierwave雾隐藏s3目录,ruby-on-rails,amazon-s3,carrierwave,fog,Ruby On Rails,Amazon S3,Carrierwave,Fog,我想让用户直接从S3下载文件,但不想公开完整的目录。目前,我可以通过以下方式使用AWS::S3库实现这一点 S3Object.url_for('beluga_baby.jpg', 'marcel_molina') 它会给我一个url,比如: http://s3-ap-southeast-1.amazonaws.com/bucketname/filename.png?AWSAccessKeyId=key&Expires=exp&Signature=signature 光是雾就可

我想让用户直接从S3下载文件,但不想公开完整的目录。目前,我可以通过以下方式使用AWS::S3库实现这一点

S3Object.url_for('beluga_baby.jpg', 'marcel_molina')
它会给我一个url,比如:

http://s3-ap-southeast-1.amazonaws.com/bucketname/filename.png?AWSAccessKeyId=key&Expires=exp&Signature=signature
光是雾就可以做到这一点吗?我试着这样配置雾:

config.fog_public = false
config.fog_authenticated_url_expiration = 600 # 10 minutes
但是文件的目录仍然是公开的,只是过期了

"https://bucketname.s3-ap-southeast-1.amazonaws.com/uploads/course_material/file/id/filename.png?AWSAccessKeyId=key&Signature=signature&Expires=exp"

如果仔细查看来自S3Object的结果,您可能会发现过期的url也是您想要的。即使有人知道存储桶的名称和路径,他们也不应该拥有访问权限,除非您明确地将存储桶公开。

s3 URL将始终包含s3存储桶和完整的密钥。否则它将无法找到该文件。@doog既然您的url受过期保护,那么显示bucket有什么不对time@Viren我不担心bucket,但是像uploads/course\u material/file这样的目录/id@doog因为你的目录不是公开的,你在什么意义上担心