我正在尝试为公共图片创建签名网址 是否可以在URL上设置权限级别,或者在上传文件后是否需要设置它?
我尝试通过传递一些标题来做到这一点,但我不确定正确的方法。
opts := &storage.SignedURLOptions{
GoogleAccessID: googleAccessID,
PrivateKey: data,
Method: "PUT",
Expires: time.Now().Add(time.Hour * 1),
ContentType: r.MimeType,
Headers: []string{"x-goog-acl"},
or maybe Headers: []string{"x-goog-acl:public-read"},
}
然后客户端也需要设置标题?
答案 0 :(得分:2)
使用签名网址的用户将使用签署该网址的实体的权限。假设您创建服务帐户A并使用A&#私钥对URL进行签名。当最终用户尝试使用该URL获取资源时,GCS将检查服务帐户A是否具有读取权限。
答案 1 :(得分:0)
您可以在创建新的存储区编写器时执行此操作。您可以设置标头并创建ACLRule。我使用“google.golang.org/cloud/storage”软件包在我在Google App Engine上托管的应用程序中执行此操作。希望这会有所帮助。
wc := bucket.Object(filename).NewWriter(ctx)
wc.ContentType = contentType
wc.CacheControl = "public, max-age=86400"
wc.ObjectAttrs.ACL = append(wc.ObjectAttrs.ACL, storage.ACLRule{Role: storage.RoleReader, Entity: storage.AllUsers})