easy-swoole / policy

Apache License 2.0
1 stars 5 forks source link

easyswoole/policy 路径验证BUG #5

Open sakiyo opened 2 years ago

sakiyo commented 2 years ago

当路径中连续两个item为相同字符串时会出现验证错误 eg: 当我们调用 $policy->check($path) 如果$path传入的是类似这样 /Api/Admin/Merchant/Merchant/getMerchantList 因为有连续两个 Merchant 则会获取不到最后一个 getMerchantList

在class EasySwoole\Policy\PolicyNode 中的 search() 方法 调试可以看到 大约123行至125行中 是因为这个判断提前返回了 if($name == $this->name){ return $this; }

如果两个名字相同则返回,并不会继续向下判断。

经测试改成如下判断可以解决: if($name == $this->name && !isset($this->leaves[$name]) && !isset($this->leaves['*'])){ return $this; }

如需讨论可在issue回复。

XueSiLf commented 4 months ago

已修复,https://github.com/easy-swoole/policy/pull/7 #5