Policy 授权验证方法中无法获取对应模型实例?
今天在使用Policy做授权验证时,遇到了个坑,在使用中间件的方式来使用策略时,授权动作的方法中不能获取到路由隐式绑定的模型实例,不知道大家有没有遇到过?
这是注册的路由:
在AuthServiceProvider中注册Policy:
控制器中调用中间件:
Policy show方法策略:
控制器show方法:
然后请求show方法,提示403 unauthorized 。。。
试了下在策略类中__construct方法和before方法中记录日志,结果根本就没执行
然后我试了下不需要模型实例的写法,把中间件改成了can:show,App\Models\Nanny
,策略show方法中只接受第一个参数,就可以正常运行,返回模型数据
难道手册中说的路由隐式绑定没有生效嘛?
然后又试了下不使用中间件的方式:
控制器show方法:
策略类show方法:
可以正常返回数据:
也能够正常打印出模型的id(能过获取模型实例)
推荐文章: