Policy 授权验证方法中无法获取对应模型实例?
今天在使用Policy做授权验证时,遇到了个坑,在使用中间件的方式来使用策略时,授权动作的方法中不能获取到路由隐式绑定的模型实例,不知道大家有没有遇到过?
这是注册的路由:

在AuthServiceProvider中注册Policy:

控制器中调用中间件:

Policy show方法策略:

控制器show方法:

然后请求show方法,提示403 unauthorized 。。。

试了下在策略类中__construct方法和before方法中记录日志,结果根本就没执行
然后我试了下不需要模型实例的写法,把中间件改成了can:show,App\Models\Nanny,策略show方法中只接受第一个参数,就可以正常运行,返回模型数据

难道手册中说的路由隐式绑定没有生效嘛?

然后又试了下不使用中间件的方式:

控制器show方法:
策略类show方法:
可以正常返回数据:

也能够正常打印出模型的id(能过获取模型实例)




关于 LearnKu
推荐文章: