Я настроил Laravel Vapor с моим приложением RESTFull, используя Святилище, и теперь я пытаюсь просто загрузить файл. Делаю запрос 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
.
Ключевой момент здесь заключается в том, что я использую Святилище для аутентификации пользователей в своем приложении. 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'),
Contracts\SignedStorageUrlController::class.'@store'
)->middleware(config('vapor.middleware', 'web'));
}
}
Vapor получает информацию от среды vapor.middleware
, какое промежуточное ПО будет применяться к маршруту /vapor/signed-storage-url
. Поскольку я использую Sanctum, мне просто пришлось вручную опубликовать конфигурацию Vapor, создав vapor.php
в моей папке config
:
- 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
.