案例:我正在使用Laravel的Authorization作为使用策略的骨干构建论坛。我运行的支票的例子有:@can('view', $forum)
,@can('reply', $topic)
,Gate::allows('create_topic', $forum)
等。这些检查基本上检查用户角色是否具有特定论坛,主题或帖子的权限。这样我可以为我的应用程序中的每个论坛赋予角色非常特定的权限。访客用户的授权和策略
的问题是,所有这些检查的经过大门类,具体的方法称为raw()
这在其第一行做到这一点:
if (! $user = $this->resolveUser()) {
return false;
}
这与论坛的问题时提出的问题。如果用户没有登录,Laravels Gate类会自动返回false。
我需要能够触发我的策略即使没有用户。说我的[email protected]
方法,我做if(User::guest() && $forum->hasGuestViewAccess()) { return true }
但正如你所看到的,这种方法永远不会触发。
有没有办法让我仍然使用Laravel的授权功能与来宾用户?
你也可以通过使用'Gate :: forUser($ guestUser)'解决解决问题的方法,但这对你的情况来说似乎没有用处,因为你仍然需要为来宾和用户使用不同的代码。 – tdhsmith