配置阿里云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具有正确的有效期。