Пар Laravel «Это действие неавторизовано» с загрузкой файла

Я настроил 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.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
0
29
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Ключевой момент здесь заключается в том, что я использую Святилище для аутентификации пользователей в своем приложении. 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.

Другие вопросы по теме