策略无法访问 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');
});
当我使用 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');
});