即使策略返回 true,Laravel 授权也会返回 403

问题描述 投票:0回答:1

我正在使用 Laravel 11、Vue 3 和 InertiaJS。

我正在尝试获得工作授权,但即使策略返回 true,它也会不断返回 403。

惯性链接有条件地显示(成功)给定帖子的编辑表单的链接:

<Link
    v-if="user.can.update"
    :href="route('posts.edit', { post: post })"
>
    Update
</Link>

下面的两条路线都失败了,我尝试过使用和不使用

middleware('auth')

Route::get( 'posts/{post}/edit',  [PostController::class, 'edit'])->name('posts.edit')
    ->middleware('auth')->can('update', 'post');

Route::get( 'posts/{post}/edit',  [PostController::class, 'edit'])->name('posts.edit')
    ->can('update', 'post');

PostPolicy

public function update(User $user, Post $post): bool
{
    return $user->id === $post->user_id;
}
dd($user->id === $post->user_id); // returns true

日志似乎也没有接收到 403 消息,所以我在那里看不到堆栈跟踪。我完全不知所措,这是什么问题?

我尝试过使用或不使用中间件“auth”,但没有成功。立即将

Gate::authorize
放入控制器似乎也不起作用。

php authorization inertiajs laravel-11
1个回答
0
投票

返回$post->user->is($user)

确保为上面的示例设置了关系。要测试策略是否命中,只需编写 return true 并查看它是否执行,如果没有,则策略未命中。

© www.soinside.com 2019 - 2024. All rights reserved.