0

私は Laravel Policy を使用しており、Spatie の Laravel-Permissions パッケージを使用して作成されたアクセス許可を確認しています。クライアント認証情報を使用した API 呼び出しの場合、コントローラー コンストラクターの authorizeResource() は 403 を返します。これを削除すると、期待される結果が返されます。

NpoPolicy.php

public function view(User $user, Npo $npo)
{
    return $user->can('npo.view');
}

NpoController.php

public function __construct()
{
    $this->authorizeResource(Npo::class);
}

api.php

Route::middleware('client')->resource('/npo', 'NpoController');

API リクエスト
URL: https://my-app.dev/api/npo/1
メソッド: GET

コントローラー コンストラクターの authorizeResource メソッドをコメント アウトすると、期待どおりの結果が得られます。

{
    "npos": {
        "id":1,
        "name":"Bailey and Sons",
        "contact_person_name":"Mr. Davion Mayert",
        "created_at":"2019-06-13 17:39:25",
        "updated_at":"2019-06-13 17:39:25"
    }
}

Laravel ポリシーには User モデル オブジェクトが必要であることを認識しており、それが私の場合、ポリシーが 403 応答を返す理由です。このような場合に API リクエスト (クライアント資格情報を使用) を処理する一般的な方法はありますか?

4

1 に答える 1