Laravel Passport - 自动绕过OAuth以获取本地Javascript请求,而不是显示" Unauthenticated。"

时间:2017-03-20 14:47:54

标签: laravel laravel-passport

我已经启动并运行了Passport。我的应用程序包含连接到我的API的JavaScript AJAX。我试图做到这一点,它只是基于Session而不是必须通过整个OAuth系统。

在文档中,看起来这是可能的:https://laravel.com/docs/5.4/passport#consuming-your-api-with-javascript

但是,我目前正在接受#34;未经身份验证。"

Kernel.php:

Route::group(['middleware' => ['auth:api']], function () {
    Route::resource('canvas-item', 'CanvasItemController',
        [
            'only' => [
                'index',  // GET    api/canvas-item
                'store',  // POST   api/canvas-item
                'update', // PUT    api/canvas-item/{canvas-item-id}
                'destroy' // DELETE api/canvas-item/{canvas-item-id}
            ],
        ]
    );
});

api.php路由示例:

function ajaxRequest() {
    $.APIAjax({
        url: '{{ url('api/canvas-item') }}',
        type: 'POST',
        data: {
             testing: null
        },
        success: function(jsonResponse) {},
        error: function(jsonResponse) {}
    });
}

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': token
    }
});

示例JavaScript请求:

X-CSRF-TOKEN    
"<tokenhere>"
X-Requested-With    
"XMLHttpRequest"

文档要求的标题已正确设置:

IEnumerable<Ball> balls = things.OfType<Ball>();
IEnumerable<Car> cars = things.OfType<Car>();

关于我如何能够过去的任何想法&#39; Unauthenticated。&#39;如果请求来自同一台服务器?

谢谢!

1 个答案:

答案 0 :(得分:0)

卸下

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

来自Kernel.php

允许正确验证API路由。如果这不是处理此问题的官方/安全方式,请告诉我。