最近给客户做了一个针对OSS鉴权下载的功能(OSS下载加密)。就是阿里云OSS的bucket是私密的,为了防止下载链接被盗用,需要结合erphpdown插件做鉴权下载。这样就算别人知道了你文件在OSS的下载地址(例如:https://mobantu.oss-cn-guangzhou.aliyuncs.com/test/erphpdown.zip)也是无法下载的。
当然,下载地址里还是填OSS的下载地址,只是在erphpdown跳转处理下载逻辑时会自动做鉴权加上参数(例如:https://mobantu.oss-cn-guangzhou.aliyuncs.com/test/erphpdown.zip?OSSAccessKeyId=xxxxx&Expires=1644376819&Signature=ooooo)。
代码示例如下:
1 |
require ERPHPDOWN_PATH.'/aliyun-oss-php-sdk/autoload.php'; use OSSOssClient; use OSSCoreOssException; $Bucket = ""; $EndPoint = "oss-cn-guangzhou.aliyuncs.com"; $keyname = explode('.aliyuncs.com/', $file)[1]; $region = "cn-guangzhou"; $KeyId = ""; $KeySecret = ""; try { $ossClient = new OssClient($KeyId, $KeySecret, $EndPoint); $presignedUrl = $ossClient->generatePresignedUrl($Bucket, $keyname, strtotime("+5 minutes")); $presignedUrl = str_replace("http://", "https://", $presignedUrl); wp_redirect($presignedUrl); exit; } catch (OssException $e) { echo $e->getMessage(); exit; } |
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。