2

我正在开发一个需要从 Google Cloud CDN 加载媒体文件的项目。目前,我正在以 urls - cdn.mydomain.com/image.jpg 的形式加载文件。但这需要提供对对象的公共访问。我需要生成签名的 url 以安全访问这些资源。我已经检查了 django-storages。它直接从存储桶提供签名 URL,但没有说明 CDN 的签名 URL。如何在 django 中为 Google Cloud CDN 生成签名 URL 并继续使用 django-storages 库?

4

2 回答 2

3

我最终写了一个存储后端。settings.CUSTOM_DOMAIN是 CDN 的地址。我的后端代码如下 -

class CustomGoogleCloudStorage(GoogleCloudStorage):
    custom_domain = settings.CUSTOM_DOMAIN

    def make_url(self, name):
        host = "https://" + self.custom_domain
        return urllib.parse.urljoin(host, name)

    def url(self, name):
        name = self._normalize_name(name)
        url = self.make_url(name)
        key_name, base64_key = get_storage_key()
        expiration_time = datetime.datetime.utcnow() + datetime.timedelta(hours=1) #put your desired time here
        return sign_url(url, key_name, base64_key, expiration_time)

sign_url函数取自GCP 的 github

于 2019-07-14T05:40:48.203 回答
2

Django 是一个高级 Python Web 框架。您可以将Django使用的加密签名功能与Cloud CDN 文档中描述的签名 URL Python(以编程方式创建签名 URL )结合使用。查看两个链接,让我们知道这是否有助于回答您的询问。

于 2019-06-17T15:37:39.023 回答