策略无法访问 Delete/Patch 路由中的用户

Policy can't acess User in Delete/Patch Route

当我使用 GET Http-Verb 调用我的 Api 路由时,它将 return 我是我的用户。如果我用 DELETE 或 PATCH 路由调用它 returns null.

我将策略添加到完整的控制器中:

namespace App\Http\Controllers\API;

use Illuminate\Http\Request;
use App\Http\Controllers\Controller;

use App\Shoppingcart;
use Validator;
use Response;

class ShoppingcartController extends Controller
    {
        public function __construct()
        {
            $this->authorizeResource(Shoppingcart::class, 'shoppingcart');
        }


    ...

    public function destroy()
    {
        ...
    }
}

然后我'die and dump'策略中的用户:

namespace App\Policies;

use App\User;
use App\Shoppingcart;
use Illuminate\Auth\Access\HandlesAuthorization;

class ShoppingcartPolicy
{
    use HandlesAuthorization;

    public function before(?User $user, $ability)
    {
        dd($user);
    }

    public function update(User $user, Shoppingcart $shoppingcart)
    {
    }

    public function delete(User $user, Shoppingcart $shoppingcart)
    {
    }
}

我在 Header 中验证了我的请求,并在 AuthServiceProvider.php

中注册了策略

Web 身份验证和 API 不同。 API.

不考虑在前端设置的 cookie

我还需要将 Auth 中间件注册到 API 路由:

Route::middleware('auth:api')->group(function(){
    Route::apiResource('/shoppingcarts', 'API\ShoppingcartController');
});