配置阿里云CDN:在阿里云CDN控制台中,开启URL鉴权功能,并设置鉴权类型为A方式,同时记录下配置的主KEY。
安装依赖:如果需要使用第三方库来生成鉴权URL,可以通过Composer安装相关依赖,例如big-dream/cdn-url-auth。
在ThinkPHP5.0项目中,可以通过以下代码生成阿里云CDN的鉴权URL(A方式):
use think\Controller; class CdnController extends Controller { public function generateAuthUrl() { // 阿里云CDN配置信息 $domainName = 'your.cdn.domain.com'; // CDN加速域名 $privateKey = 'yourPrivateKey'; // 鉴权密钥 $filename = '/path/to/default.zip'; // 文件路径 $timestamp = time(); // 当前时间戳 $rand = md5(microtime()); // 随机数 $uid = '0'; // 用户ID,暂未使用,设置为0 // 构造签名字符串 $signString = $filename . '-' . $timestamp . '-' . $rand . '-' . $uid . '-' . $privateKey; $md5Hash = md5($signString); // 计算MD5哈希值 // 拼接鉴权URL $authUrl = "http://{$domainName}{$filename}?auth_key={$timestamp}-{$rand}-{$uid}-{$md5Hash}"; // 返回鉴权URL return json(['auth_url' => $authUrl]); } }
如果使用 big-dream/cdn-url-auth库,可以通过以下代码生成鉴权URL:
use think\Controller; use bigDream\CdnUrlAuth\Aliyun; class CdnController extends Controller { public function generateAuthUrl() { // 初始化阿里云CDN鉴权类 $auth = new Aliyun( 'yourPrivateKey', // 鉴权密钥 'auth_key', // 鉴权参数名 3600 // 链接有效期(秒) ); // 生成鉴权URL(A方式) $filename = '/path/to/default.zip'; // 文件路径 $timestamp = time(); // 当前时间戳 $rand = md5(microtime()); // 随机数 $uid = '0'; // 用户ID,暂未使用,设置为0 $authUrl = $auth->typeA($filename, $timestamp, $rand, $uid); // 返回鉴权URL return json(['auth_url' => $authUrl]); } }
在阿里云CDN中,鉴权URL的有效期并不是在生成URL的代码中直接设置的,而是通过CDN控制台配置的鉴权URL有效时长来控制的。在生成鉴权URL的代码中,时间戳 timestamp 是根据当前时间生成的,它与CDN控制台中配置的鉴权URL有效时长共同决定了鉴权URL的失效时间。
以下是修改后的代码,其中 $timestamp 是当前时间戳, $expireTime 是鉴权URL的有效期(单位为秒),这个有效期应该与CDN控制台中配置的鉴权URL有效时长相匹配:
use think\Controller; class CdnController extends Controller { public function generateAuthUrl() { // 阿里云CDN配置信息 $domainName = 'your.cdn.domain.com'; // CDN加速域名 $privateKey = 'yourPrivateKey'; // 鉴权密钥 $filename = '/path/to/default.zip'; // 文件路径 $timestamp = time(); // 当前时间戳 $expireTime = 3600; // 鉴权URL的有效期(单位为秒),应与CDN控制台配置一致 $rand = md5(microtime()); // 随机数 $uid = '0'; // 用户ID,暂未使用,设置为0 // 构造签名字符串 $signString = $filename . '-' . $timestamp . '-' . $rand . '-' . $uid . '-' . $privateKey; $md5Hash = md5($signString); // 计算MD5哈希值 // 拼接鉴权URL $authUrl = "http://{$domainName}{$filename}?auth_key={$timestamp}-{$rand}-{$uid}-{$md5Hash}"; // 返回鉴权URL return json(['auth_url' => $authUrl]); } }
在CDN控制台中配置鉴权URL有效时长的步骤如下:
登录CDN控制台。
在左侧导航栏,单击 域名管理 。
在 域名管理 页面,找到目标域名,单击 操作 列的 管理。
在指定域名的左侧导航栏,单击 访问控制。
单击 URL鉴权 页签。
在 鉴权URL设置 区域,单击 修改配置。
在 鉴权URL有效时长 中设置URL鉴权的有效时长,单位为秒。
单击 确定。
通过以上步骤,你可以确保生成的鉴权URL具有正确的有效期。