大佬教程收集整理的这篇文章主要介绍了php – 访客用户的授权和策略,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
问题是所有这些检查都通过Gate类,特别是一个名为raw()的方法,它在第一行中执行此操作:
if (! $user = $this->resolveUser()) { return false; }
这在处理论坛时会出现问题.我的应用程序的访客也应该被允许查看我的论坛,但是从上面的代码可以看出,如果用户没有登录,Laravels Gate类会自动返回false.
即使没有用户,我也需要能够触发我的策略.在我的ForumPolicy @ view方法中说,如果(User :: guest()&& $forum-> hasGuestViewAccess()){return true}
但正如您所看到的,此方法永远不会触发.
由于解析器受到保护并且没有setter,因此您需要在创建时对其进行修改.门is instantiated in Laravel’s AuthServiceProvider
.您可以扩展此类并使用您的子类替换app.providers配置中的引用.
这将取决于你返回什么样的客户对象(只要它是真实的),但我可能会使用像空的用户模型:
protected function registerAccessGate() { $this->app->singleton(GateContract::class,function ($app) { return new Gate($app,function () use ($app) { $user = $app['auth']->user(); if ($user) { return $user; } return new \App\User; }); }); }
您可以更进一步,在其上设置一个特殊属性,如$user-> isGuest,甚至可以定义一个特殊的guest类或常量.
或者,您可以在Auth级别调整您的进程,以便所有已注销的会话都包含在对Auth :: setUser($guestUserObject)的调用中.
以上是大佬教程为你收集整理的php – 访客用户的授权和策略全部内容,希望文章能够帮你解决php – 访客用户的授权和策略所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。