Check Laravel 5.7 login from external script

孤人 提交于 2019-12-13 01:13:20

问题


I have a Laravel app and I need to check if a user is logged and who from a external script. I'm using the following lines to load Laravel and try to check it.

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();
}

With this lines I can access any Laravel function and I can check the login if I made GET request to the external scripts, but when the request is POST it always fails. I'm unable to check the login and I see that the session changes because can't get the existing session.

I have made many tests and I think that somethings of Laravel are not working fine, like routes or middlewares. I can made it work if I disable all encryption of the cookies and the session, but I want to use this security functions.

I'm using updated Laravel 5.7 and I had this code working in Laravel 5.4

Thank you for your help.


回答1:


I discovered the problem,

The trick is that the route is external to laravel so laravel's route resolver identifies the current route as /. It was working on GET requests because in my routes file I have the / route only as get. If I set the / route as any, everything works.

I wasn't seeing the problem because I was not terminating Laravel's execution. If I change the logged user verification to this, it shows the error:

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

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

    exit();
}

This two lines ends laravel execution and returns the error "405 Method Not Allowed".

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

Thank you for your help.



来源:https://stackoverflow.com/questions/52401185/check-laravel-5-7-login-from-external-script

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!