Laravel授权无效

时间:2018-07-18 20:36:04

标签: php laravel laravel-5 authorization laravel-blade

我试图隐藏一个按钮,仅将其显示给管理员,我想我写的代码不错,但仍然无法获得想要的结果,我也看不到带有管理员帐户的按钮普通用户帐户

FolderPolicy代码

public function create(User $user)
{
    if($user->is_admin)
        return true;
}

视图

        @can('create')
            <a class="btn btn-primary" href="{{ route('newdoss') }}">New Folder</a>
        @endcan

AuthServiceProvider文件

protected $policies = [
    'App\Model' => 'App\Policies\ModelPolicy',
    'App\Folder' => 'App\Policies\FolderPolicy',
];

我知道,如果通过身份验证的用户是管理员,还可以通过检查Direclty来获得我想要的结果,但是我想弄清楚为什么这个方法不起作用。谢谢。

1 个答案:

答案 0 :(得分:1)

您需要指定要创建的资源或模型。使用create可以传递类的名称。对于更新和删除,您可以传递该类的实例。

@can('create', \App\Folder::class)

当策略失败时,您还需要返回false。您可以将创建方法简化为:

public function create(User $user)
{
    return (bool) $user->is_admin
}