Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Laravel 5.4政策检查始终为假_Laravel - Fatal编程技术网

Laravel 5.4政策检查始终为假

Laravel 5.4政策检查始终为假,laravel,Laravel,因此,我创建了一个策略并在AuthServicePRovider中注册了它,但它总是返回false。这是我第一次与政策打交道,所以我确信我做得不对,但举几个例子,没有什么对我有效 AuthServiceProvider protected $policies = [ 'App\Model' => 'App\Policies\ModelPolicy', Article::class => ArticlePolicy::class, ]; Art

因此,我创建了一个策略并在AuthServicePRovider中注册了它,但它总是返回false。这是我第一次与政策打交道,所以我确信我做得不对,但举几个例子,没有什么对我有效

AuthServiceProvider

protected $policies = [
        'App\Model' => 'App\Policies\ModelPolicy',
        Article::class => ArticlePolicy::class,
    ];
ArticleController@show

public function show($article_id) I 
{
    $article = DB::table('pjt_article as a')
        ->join('pjt_categories_article as c', 'a.cate_id', '=', 'c.cate_id')
        ->where('article_id', $article_id)
        ->first();
    $this->authorize('view', $article->username);
    return view('admin.content.show-article', ['art' => $article]);
}
条款政策

public function view(Admin $admin, Article $article)
{
    return $admin->id == $article->username;
}
我正在努力,但没有工作

此图像错误为403


您的策略映射到模型类名。您必须有一个模型实例才能做到这一点。您的查询直接使用查询生成器,而不返回模型实例

$article = Article::....->first();
对于
authorize
您希望将要授权的资源传递给
authorize
而不是您最终将在策略中签入的资源的属性:

$this->authorize('view', $article->username);

// to

$this->authorize('view', $article);

Gate知道对资源使用策略的方式是因为传递的对象的类型,或者如果传递的是类名。

您是否在
AuthServiceProvider
中导入了
文章
文章策略
类?@Maraboc,请看第一个代码block@Quezler我说的导入是指
使用App\Article
:pinarticlepolicy
使用App\Model\Admin;使用App\Model\Article如果我没有弄错的话,在页面呈现之前会抛出一个异常:)图像错误
数组:4[“能力”=>“查看”“结果”=>错误的“用户”=>7个参数”=>“[0=>Object(std
我只是理解你发布的内容。@Maraboc之后帮助我,非常感谢你们