带文件上传功能的拉拉维尔蒸汽"This action is unauthorized"



我已经使用Sanctum用RESTFull应用程序设置了Laravel Vapor,现在我只想上传一个文件。我正在请求POST /vapor/signed-storage-url,我得到:

{
"message": "This action is unauthorized.",
...
}

我已经创建了文档中描述的UserPolicy

class UserPolicy 
{
/**
* Determine whether the user can upload files.
*
* @param User $user
* @return bool
*/
public function uploadFiles(User $user): bool
{
return true;
}
}

但我一直得到This action is unauthorized

这里的关键信息是我正在使用Sanctum对我的应用程序中的用户进行身份验证。Laravel的Vapor默认使用web中间件

从文档中,我找不到发布Vapor配置的方法。

如果我们查看路线配置,我们将拥有:

/**
* Ensure that Vapor's internal routes are defined.
*
* @return void
*/
public function ensureRoutesAreDefined()
{
if ($this->app->routesAreCached()) {
return;
}
if (config('vapor.signed_storage.enabled', true)) {
Route::post(
config('vapor.signed_storage.url', '/vapor/signed-storage-url'),
ContractsSignedStorageUrlController::class.'@store'
)->middleware(config('vapor.middleware', 'web'));
}
}

Vapor正在获取vapor.middleware环境,以告知哪个中间件将应用于/vapor/signed-storage-url路由。由于我使用的是Sanctum,我只需要在我的config文件夹中创建一个vapor.php来手动发布Vapor的配置:

- config
-- app.php
-- filesystem.php
-- vapor.php 👈

现在,在这个文件中,您可以定义要设置为auth:sanctum:的中间件

<?php
return [
// Most of these variables are not necessary as the default from Vapor's 
// core library is okay for most cases but I will leave here you need to use any of them
'redirect_to_root' => true,
'redirect_robots_txt' => true,
'serve_assets' => [],
'middleware' => 'auth:sanctum' 👈
];

现在Vapor将开始使用auth:sanctum中间件来验证对POST /vapor/signed-storage-url的请求

相关内容

  • 没有找到相关文章

最新更新