Skip to content

Commit d5525a3

Browse files
committed
修改 sts 例子
1 parent d83e117 commit d5525a3

File tree

1 file changed

+31
-110
lines changed

1 file changed

+31
-110
lines changed

server/sts.php

+31-110
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,26 @@
33

44
// 配置参数
55
$config = array(
6-
'Url' => 'https://sts.api.qcloud.com/v2/index.php',
7-
'Domain' => 'sts.api.qcloud.com',
8-
'Proxy' => '',
9-
'SecretId' => 'AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 固定密钥
10-
'SecretKey' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 固定密钥
11-
'Bucket' => 'test-1250000000',
12-
'Region' => 'ap-guangzhou',
13-
'AllowPrefix' => '_ALLOW_DIR_/*', // 必填,这里改成允许的路径前缀,这里可以根据自己网站的用户登录态判断允许上传的目录,例子:* 或者 a/* 或者 a.jpg
6+
'url' => 'https://sts.api.qcloud.com/v2/index.php',
7+
'domain' => 'sts.api.qcloud.com',
8+
'proxy' => '',
9+
'secretId' => 'AKIDxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 固定密钥
10+
'secretKey' => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx', // 固定密钥
11+
'bucket' => 'test-1250000000', // 换成你的 bucket
12+
'region' => 'ap-guangzhou', // 换成 bucket 所在园区
13+
'durationSeconds' => 1800, // 密钥有效期
14+
'allowPrefix' => '*', // 必填,这里改成允许的路径前缀,这里可以根据自己网站的用户登录态判断允许上传的目录,例子:* 或者 a/* 或者 a.jpg
15+
// 密钥的权限列表。简单上传和分片需要以下的权限,其他权限列表请看 https://cloud.tencent.com/document/product/436/14048
16+
'allowActions' => array (
17+
// 简单上传
18+
'name/cos:PutObject',
19+
// 分片上传
20+
'name/cos:InitiateMultipartUpload',
21+
'name/cos:ListMultipartUploads',
22+
'name/cos:ListParts',
23+
'name/cos:UploadPart',
24+
'name/cos:CompleteMultipartUpload'
25+
)
1426
);
1527

1628
function _hex2bin($data) {
@@ -31,7 +43,7 @@ function json2str($obj, $notEncode = false) {
3143
// 计算临时密钥用的签名
3244
function getSignature($opt, $key, $method) {
3345
global $config;
34-
$formatString = $method . $config['Domain'] . '/v2/index.php?' . json2str($opt, 1);
46+
$formatString = $method . $config['domain'] . '/v2/index.php?' . json2str($opt, 1);
3547
$sign = hash_hmac('sha1', $formatString, $key);
3648
$sign = base64_encode(_hex2bin($sign));
3749
return $sign;
@@ -41,108 +53,17 @@ function getSignature($opt, $key, $method) {
4153
function getTempKeys() {
4254

4355
global $config;
44-
45-
// 判断是否修改了 AllowPrefix
46-
if ($config['AllowPrefix'] === '_ALLOW_DIR_/*') {
47-
return array('error'=> '请修改 AllowPrefix 配置项,指定允许上传的路径前缀');
48-
}
49-
50-
$ShortBucketName = substr($config['Bucket'],0, strripos($config['Bucket'], '-'));
51-
$AppId = substr($config['Bucket'], 1 + strripos($config['Bucket'], '-'));
56+
$ShortBucketName = substr($config['bucket'],0, strripos($config['bucket'], '-'));
57+
$AppId = substr($config['bucket'], 1 + strripos($config['bucket'], '-'));
5258
$policy = array(
5359
'version'=> '2.0',
5460
'statement'=> array(
5561
array(
56-
'action'=> array(
57-
// // 所有操作
58-
// 'name/cos:*',
59-
60-
// // 列出 Bucket 列表
61-
// 'name/cos:GetService',
62-
// // Bucket ACL 读写
63-
// 'name/cos:GetBucketACL',
64-
// 'name/cos:PutBucketACL',
65-
// // Object ACL 读写
66-
// 'name/cos:GetObjectACL',
67-
// 'name/cos:PutObjectACL',
68-
// // Policy 权限策略
69-
// 'name/cos:PutBucket',
70-
// 'name/cos:HeadBucket',
71-
// 'name/cos:GetBucket',
72-
// 'name/cos:GetBucketObjectVersions',
73-
// 'name/cos:DeleteBucket',
74-
// 'name/cos:GetBucketLocation',
75-
// // Policy 权限策略
76-
// 'name/cos:GetBucketPolicy',
77-
// 'name/cos:PutBucketPolicy',
78-
// 'name/cos:DeleteBucketPolicy',
79-
// // Versioning 多版本配置
80-
// 'name/cos:PutBucketVersioning',
81-
// 'name/cos:GetBucketVersioning',
82-
// // CORS 跨域配置
83-
// 'name/cos:PutBucketCORS',
84-
// 'name/cos:GetBucketCORS',
85-
// 'name/cos:DeleteBucketCORS',
86-
// // Lifecycle 生命周期
87-
// 'name/cos:PutBucketLifecycle',
88-
// 'name/cos:GetBucketLifecycle',
89-
// 'name/cos:DeleteBucketLifecycle',
90-
// // Replication 跨区域复制
91-
// 'name/cos:PutBucketReplication',
92-
// 'name/cos:GetBucketReplication',
93-
// 'name/cos:DeleteBucketReplication',
94-
// // Tagging 标签
95-
// 'name/cos:PutBucketTagging',
96-
// 'name/cos:GetBucketTagging',
97-
// 'name/cos:DeleteBucketTagging',
98-
// // Referer 防盗链
99-
// 'name/cos:GetBucketReferer',
100-
// 'name/cos:PutBucketReferer',
101-
// 'name/cos:DeleteBucketReferer',
102-
// // Origin 源站设置
103-
// 'name/cos:GetBucketOrigin',
104-
// 'name/cos:PutBucketOrigin',
105-
// 'name/cos:DeleteBucketOrigin',
106-
// // Website 静态网站
107-
// 'name/cos:GetBucketWebsite',
108-
// 'name/cos:DeleteBucketWebsite',
109-
// 'name/cos:PutBucketWebsite',
110-
// // Logging 日志记录
111-
// 'name/cos:GetBucketLogging',
112-
// 'name/cos:PutBucketLogging',
113-
// // Logging 日志记录
114-
// 'name/cos:GetBucketNotification',
115-
// 'name/cos:PutBucketNotification',
116-
// // 删除文件
117-
// 'name/cos:DeleteMultipleObjects',
118-
// 'name/cos:DeleteObject',
119-
// 'name/cos:AbortMultipartUpload',
120-
// // 复制文件或分片
121-
// 'name/cos:PutObjectCopy',
122-
// 'name/cos:UploadPartCopy',
123-
// // 取回归档
124-
// 'name/cos:PostObjectRestore',
125-
// // 读取文件
126-
// 'name/cos:HeadObject',
127-
// 'name/cos:GetObject',
128-
// 'name/cos:OptionsObject',
129-
// // 上传操作
130-
// 'name/cos:PostObject',
131-
// 'name/cos:AppendObject',
132-
// 简单上传
133-
'name/cos:PutObject',
134-
// 分片上传操作
135-
'name/cos:InitiateMultipartUpload',
136-
'name/cos:ListMultipartUploads',
137-
'name/cos:ListParts',
138-
'name/cos:UploadPart',
139-
'name/cos:CompleteMultipartUpload',
140-
),
62+
'action'=> $config['allowActions'],
14163
'effect'=> 'allow',
14264
'principal'=> array('qcs'=> array('*')),
14365
'resource'=> array(
144-
'qcs::cos:' . $config['Region'] . ':uid/' . $AppId . ':prefix//' . $AppId . '/' . $ShortBucketName . '/',
145-
'qcs::cos:' . $config['Region'] . ':uid/' . $AppId . ':prefix//' . $AppId . '/' . $ShortBucketName . '/' . $config['AllowPrefix']
66+
'qcs::cos:' . $config['region'] . ':uid/' . $AppId . ':prefix//' . $AppId . '/' . $ShortBucketName . '/' . $config['allowPrefix']
14667
)
14768
)
14869
)
@@ -156,19 +77,19 @@ function getTempKeys() {
15677

15778
$params = array(
15879
'Region'=> 'gz',
159-
'SecretId'=> $config['SecretId'],
80+
'SecretId'=> $config['secretId'],
16081
'Timestamp'=> $Timestamp,
16182
'Nonce'=> $Nonce,
16283
'Action'=> $Action,
163-
'durationSeconds'=> 7200,
84+
'durationSeconds'=> $config['durationSeconds'],
16485
'name'=> 'cos',
16586
'policy'=> urlencode($policyStr)
16687
);
167-
$params['Signature'] = getSignature($params, $config['SecretKey'], $Method);
88+
$params['Signature'] = getSignature($params, $config['secretKey'], $Method);
16889

169-
$url = $config['Url'];
90+
$url = $config['url'];
17091
$ch = curl_init($url);
171-
$config['Proxy'] && curl_setopt($ch, CURLOPT_PROXY, $config['Proxy']);
92+
$config['proxy'] && curl_setopt($ch, CURLOPT_PROXY, $config['proxy']);
17293
curl_setopt($ch, CURLOPT_HEADER, 0);
17394
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,0);
17495
curl_setopt($ch,CURLOPT_SSL_VERIFYHOST,0);
@@ -182,7 +103,7 @@ function getTempKeys() {
182103
$result = json_decode($result, 1);
183104
if (isset($result['data'])) {
184105
$result = $result['data'];
185-
$result['startTime'] = $Timestamp;
106+
$result['startTime'] = $result['expiredTime'] - $config['durationSeconds'];
186107
}
187108

188109
return $result;

0 commit comments

Comments
 (0)