Open sakiyo opened 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回复。
好的,感谢反馈,晚点我们处理下。
当路径中连续两个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回复。