【发布时间】:2016-05-20 23:09:04
【问题描述】:
案例:我正在使用 Laravel 的授权作为使用策略的主干建立一个论坛。我运行的检查示例有@can('view', $forum)、@can('reply', $topic)、Gate::allows('create_topic', $forum) 等。这些检查主要检查用户角色是否具有特定论坛、主题或帖子的权限。这样我就可以为我的应用程序中的每个论坛赋予角色非常具体的权限。
问题是所有这些检查都通过 Gate 类,特别是一个名为 raw() 的方法,它在第一行执行以下操作:
if (! $user = $this->resolveUser()) {
return false;
}
这在处理论坛时会出现问题。我的应用程序的访客也应该被允许查看我的论坛,但是从上面的代码可以看出,如果用户没有登录,Laravels Gate 类会自动返回 false。
即使没有用户,我也需要能够触发我的策略。用我的ForumPolicy@view 方法说,我做if(User::guest() && $forum->hasGuestViewAccess()) { return true }
但是如你所见,这个方法永远不会触发。
有没有办法让我仍然对来宾用户使用 Laravel 的授权功能?
【问题讨论】:
标签: php laravel laravel-5 laravel-5.1