Проверьте Laravel 5.7 вход из внешнего скрипта не работает с POST - PullRequest
0 голосов
/ 26 февраля 2019

У меня точно такая же проблема, как у Альваро:

Проверка входа в Laravel 5.7 из внешнего скрипта

У меня был внешний скрипт, которого у меня нетиспользовался с момента обновления до 5.7 с шифрованием куки, и теперь он не работает с запросами POST, просто GET.

Я попробовал трюк Route::any('/' ... в его собственном ответе, однако не могупосмотрите, откуда он получает переменную $response в своем примере кода - и я попытался отключить оба:

\App\Http\Middleware\EncryptCookies::class,
\App\Http\Middleware\VerifyCsrfToken::class,

из Http \ Kernel

Что касается моего кода -это почти точно так же, как его - и не работает:

require_once __DIR__.'/../../../vendor/autoload.php';

$app = require_once __DIR__.'/../../../bootstrap/app.php';

$app->make('Illuminate\Contracts\Http\Kernel')
    ->handle(Illuminate\Http\Request::capture());

$isAuthorized = Auth::check();
if(!$isAuthorized){
    echo "Not Authorized";
    exit();
}

Казалось, что он зашел в тупик с этим, так что любой совет по поводу исправления или даже таинственный $response будет оченьпризнателен!

Редактирование / обновление: Интересно, что у меня есть Route::fallback() в моем маршруте / web.php и удаление, которое вызывает сбой аутентификации на внешний запрос GET тоже, так что это может быть связано с маршрутизацией иэто не загружается изнутриПоставщик маршрутизатора приложений Laravel?

1 Ответ

0 голосов
/ 26 февраля 2019

Понял!После такой долгой работы над этим, возможно, работа над написанием вопроса, приведенного выше, привела меня к более ясному уму в самом деле разобраться в этом.

Чтобы исследовать, я сделал кое-что, вставив это в свой внешний файл PHPчуть ниже:

require_once __DIR__.'/../../../vendor/autoload.php';

$app = require_once __DIR__.'/../../../bootstrap/app.php';

$app->make('Illuminate\Contracts\Http\Kernel')
    ->handle(Illuminate\Http\Request::capture());

Я добавил это:

echo json_encode(Route::current()->parameters());

Это просто помогло мне увидеть, какое объявление маршрута перехватило запрос, и это был запасной маршрут - который не 't POST.

То, что отличало мою ситуацию (и, следовательно, разрешение) от исходного запросчика / вопроса, заключалось в том, что папка «addons» находилась в моей общедоступной папке laravel.Это означало, что он не перехватывал общий / путь маршрута - но фактический addons/file.php в качестве параметра маршрута.

Поэтому я решил просто добавить это в конец моего файла маршрутов web.php -незадолго до запасного маршрута:

Route::any('addons/file.php', null);

Все отсортировано - теперь аддоны загружаются и аутентифицируются нормально.

...