在显示回复删除按钮时如何判断授权方法来自哪里?

@can('destroy', $reply) 判断权限时,
是怎么知道授权方法 destroy 来自 ReplyPolicy 还是 TopicPolicy
是根据后面的实例参数,还是将所有相同名称的授权方法都试一次?

《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 1

是根据第二个参数
Laravel最终会调用以下方法:

Illuminate\Auth\Access\Gate

protected function resolveAuthCallback($user, $ability, array $arguments)  // $user是当前用户,$ability是我们传给它的第一个参数,这里就是destroy,$arguments是之后的参数
{
    //  这里的if判断有没有第二个参数并且传给@can的第二个参数有没有注册policy,如果有就调用policy里的ability,否则返回一个 return false 的闭包
    if (isset($arguments[0]) &&
        ! is_null($policy = $this->getPolicyFor($arguments[0])) &&
        $callback = $this->resolvePolicyCallback($user, $ability, $arguments, $policy)) {
        return $callback;
    }

    if (isset($this->abilities[$ability])) {
        return $this->abilities[$ability];
    }

    return function () {
        return false;
    };
}
5年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!