JaC*_*hNo 5 php laravel-middleware laravel-nova laravel-5.8
我为 API 端点创建了一个资源控制器。我还为模型创建了相应的策略。
如果我使用每个方法进行授权检查
$this->authorize('delete', $asset);
Run Code Online (Sandbox Code Playgroud)
然后它按预期工作。但是如果我将以下内容添加到构造中,我总是会收到 403 禁止。不确定我缺少什么,因为以下内容应适用于所有方法的授权。
$this->authorizeResource(Asset::class, 'asset');
Run Code Online (Sandbox Code Playgroud)
这是我的路线:
Route::group(['middleware' => ['auth:api']], function () {
Route::Resource('asset', 'AssetsApiController');
});
Run Code Online (Sandbox Code Playgroud)
我的政策是这样注册的:
protected $policies = [
Asset::class => AssetPolicy::class,
];
Run Code Online (Sandbox Code Playgroud)
我的删除策略方法是
public function delete(User $user, Asset $asset)
{
return true;
}
Run Code Online (Sandbox Code Playgroud)
API 控制器构造函数如下所示:
public function __construct()
{
$this->authorizeResource(Asset::class,'asset');
}
Run Code Online (Sandbox Code Playgroud)
API控制器方法是
public function destroy($assetID)
{
$asset = Asset::findOrFail($assetID);
$asset->delete();
}
Run Code Online (Sandbox Code Playgroud)
我的路线是
| GET|HEAD | api/asset | asset.index | App\Http\Controllers\AssetsApiController@index | api,auth:api |
| POST | api/asset | asset.store | App\Http\Controllers\AssetsApiController@store | api,auth:api,can:create,App\Asset |
| GET|HEAD | api/asset/create | asset.create | App\Http\Controllers\AssetsApiController@create | api,auth:api,can:create,App\Asset |
| PUT|PATCH | api/asset/{asset} | asset.update | App\Http\Controllers\AssetsApiController@update | api,auth:api,can:update,asset |
| DELETE | api/asset/{asset} | asset.destroy | App\Http\Controllers\AssetsApiController@destroy | api,auth:api,can:delete,asset |
| GET|HEAD | api/asset/{asset} | asset.show | App\Http\Controllers\AssetsApiController@show | api,auth:api,can:view,asset |
| GET|HEAD | api/asset/{asset}/edit | asset.edit | App\Http\Controllers\AssetsApiController@edit | api,auth:api,can:update,asset |
| GET|HEAD | assets | | App\Http\Controllers\AssetsController@index | web |
Run Code Online (Sandbox Code Playgroud)
我想我遗漏了一些东西,但我看不到它,门在望远镜中显示为拒绝。唯一奇怪的是serveNova中间件似乎是问题的根源。
时间 2019 年 5 月 8 日上午 10:51:37(14 米前)
主机名 core- hosp
能力删除
结果被拒绝
位置 /home/vagrant/code/nova/src/Http/Middleware/ServeNova.php:25
Request View Request
Tags Auth: 1
我在这里描述了我在这个令人厌烦的问题中学到的经验教训:https : //github.com/laravel/framework/issues/22847#issuecomment-521308861。也许有人会发现它很有用。
| 归档时间: |
|
| 查看次数: |
5297 次 |
| 最近记录: |