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

У меня есть приложение Laravel, и мне нужно проверить, зарегистрирован ли пользователь и кто из внешнего скрипта.Я использую следующие строки для загрузки Laravel и пытаюсь проверить его.

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

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

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

/*if (Cookie::get(config('session.cookie')) != "") {
    $id = Cookie::get(config('session.cookie'));
    Session::driver()->setId($pericod);
    Session::driver()->start();
}*/

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

С помощью этих строк я могу получить доступ к любой функции Laravel и проверить вход в систему, если я сделал GET запрос к внешнемусценарии, но когда запрос POST, он всегда терпит неудачу.Я не могу проверить вход в систему и вижу, что сеанс меняется, потому что я не могу получить существующий сеанс.

Я провел много тестов и думаю, что некоторые вещи Laravel не работают нормально, например, маршруты или. промежуточное программноеЯ могу заставить его работать, если отключу все шифрование файлов cookie и сеанса, но я хочу использовать эти функции безопасности.

Я использую обновленный Laravel 5.7, и у меня этот код работал в Laravel 5.4

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 04 октября 2018

Я обнаружил проблему,

Хитрость в том, что маршрут является внешним по отношению к laravel, поэтому распознаватель маршрута laravel идентифицирует текущий маршрут как /.Он работал на GET запросах, потому что в моем файле маршрутов у меня есть / route только как get.Если я установлю / route как любое, все будет работать.

Я не вижу проблемы, потому что я не прекращаю выполнение Laravel.Если я изменяю зарегистрированное подтверждение пользователя на это, оно показывает ошибку:

$isAuthorized = Auth::check();
if(!$isAuthorized){
    echo "NO AUTORIZADO";

    $response->send();
    $kernel->terminate($request, $response);

    exit();
}

Эти две строки завершают выполнение laravel и возвращают ошибку «405 Method Not Allowed».

$response->send();
$kernel->terminate($request, $response);

Спасибо за вашу помощь.

...