overtrue / laravel-qcloud-federation-token

QCloud COS FederationToken generator for Laravel.
MIT License
16 stars 2 forks source link

请问有什么方法可以获取设定的路经吗? #2

Closed loserc6 closed 4 weeks ago

loserc6 commented 1 month ago

如果设定的uuid,有什么方法可以获取到设定的路经吗?

[
 "qcs::cos:ap-beijing:uid/<appid>:<bucket>-<appid>/<date>/<uuid>/*",
]
overtrue commented 4 weeks ago

https://github.com/overtrue/laravel-qcloud-federation-token/blob/master/src/Strategies/Strategy.php#L52 https://github.com/overtrue/laravel-qcloud-federation-token/blob/master/src/Strategies/Strategy.php#L72

// 使用默认策略(配置项 strategies 中第一个)
$strategy = FederationToken::strategy();
// 或者指定策略
$strategy = FederationToken::strategy('cos');

// 获取生成的路径信息
$strategy->getResources(); 
$strategy->getStatements();

$token = $strategy->createToken();
loserc6 commented 4 weeks ago

https://github.com/overtrue/laravel-qcloud-federation-token/blob/master/src/Strategies/Strategy.php#L52 https://github.com/overtrue/laravel-qcloud-federation-token/blob/master/src/Strategies/Strategy.php#L72

// 使用默认策略(配置项 strategies 中第一个)
$strategy = FederationToken::strategy();
// 或者指定策略
$strategy = FederationToken::strategy('cos');

// 获取生成的路径信息
$strategy->getResources(); 
$strategy->getStatements();

$token = $strategy->createToken();
$strategy->getStatements();可以获取到路经
但是路经如果配置的是 <uuid> 
getStatements获取与Token接口发送的不一样
overtrue commented 4 weeks ago

不一样?贴一下看看?

loserc6 commented 4 weeks ago
#应该是$this->getStatements() 不会重复利用 导致每次调用都会重新生成新的路经
public function createToken(): Token
    {
        return $this->getBuilder()->build($this->getStatements(), $this->getExpiresIn(), $this->getName());
    }
image

[2024-08-15 10:45:32] local.INFO: test [{"principal":[],"effect":"allow","action":["cos:PutObject","cos:GetObject"],"resource":["qcs::cos:ap-chongqing:uid/*****/20240815/bba92a9a-f4fb-438c-808d-8851c19e258f/*"],"condition":[]}]

overtrue commented 4 weeks ago

我看看怎么修复这个问题

overtrue commented 4 weeks ago

@loserc6 3.2.0 已发布, $token->getStatements() 可用。

loserc6 commented 4 weeks ago

@loserc6 3.2.0 已发布, $token->getStatements() 可用。

谢谢超哥 更新后正常了

overtrue commented 4 weeks ago

@loserc6 不客气