easyswoole icon indicating copy to clipboard operation
easyswoole copied to clipboard

easyswoole/policy 路径验证BUG

Open sakiyo opened this issue 2 years ago • 1 comments

当路径中连续两个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回复。

sakiyo avatar May 28 '22 10:05 sakiyo

好的,感谢反馈,晚点我们处理下。

XueSiLf avatar Jun 06 '22 07:06 XueSiLf