我遇到了一个权限策略无法正常运行的问题,导致授权尝试始终返回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。我有什么遗漏吗?仔细检查了拼写错误,却找不到任何问题。我还确认路由模型绑定按预期工作,因此这不是空资源问题。我尝试在策略中使用dd()
,但它甚至没有被调用。
auth:api
中间件。我在控制器方法中,在授权运行之前,通过“dd()”确认了我的已验证用户。 - Collin Henderson