首页 文章

Laravel授权政策未被调用

提问于
浏览
2

我无法让我的某个auth策略正常运行,导致授权尝试始终返回false . 我甚至只是为了测试而强制函数返回true . 我正在使用Laravel 5.4,这是我的政策功能:

public function can_modify_or_delete(User $user, Comment $comment)
{
    return true;
}

在我的 AuthServiceProvider.php 文件中,我已将 CommentPolicy 添加到我现有的政策注册中 .

protected $policies = [
    'App\Models\Post' => 'App\Policies\PostPolicy',
    'App\Models\Comment' => 'App\Policies\CommentPolicy',
];

奇怪的是,该政策一直运作得很好 . 注释似乎没有被注册或没有被正确调用 .

在我的路线:

Route::delete('/comments/{comment}', 'CommentsController@destroy');

并在 CommentsController

public function destroy(Request $request, Comment $comment)
{   
    $this->authorize('can_modify_or_delete', $comment);
    $comment->delete();

    return response(['status' => 'Comment deleted'], 200);
}

不幸的是,无论如何,授权检查都返回false . 我错过了什么吗?非常仔细地检查了拼写错误并且没有资源问题.1818841_不是空资源问题 . 我在政策中尝试了 dd() ,甚至没有被召唤 .

1 回答

  • 4

    哇,所以它实际上是我的一个错字(典型!) . 在我的 Comment 模型中,我意外地在我的命名空间中有一个小写的 models ,即它是:

    namespace App\models;
    

    应该是什么时候:

    namespace App\Models;
    

    这只让我措手不及,因为在我的控制器中我有:

    use App\Models\Comment;
    

    并且 destroy() 方法注入一个注释,实际上工作正常,注释正常填充 . 政策注册路径似乎必须比 use 语句更准确 .

相关问题