【发布时间】:2018-09-26 10:11:31
【问题描述】:
我有一个适用于 Laravel 和 VueJs 的应用程序。我也有一个 VK 机器人。 Bot 和 Vue 使用相同的 API 路由。
对于机器人,我使用带有下一个标头的 oauth 访问令牌
Accept : application/json, Authorization: Bearer my_token_code
机器人运行良好。
对于 VueJ,我使用 X-CSRF-TOKEN。当我尝试从 vue 发送请求时出现错误
未经身份验证。
我的路线
Route::middleware('auth:api')->group(function(){
Route::get('/prepare/', 'CompgenApiController@prepareDefault');
Route::post('/replace/', 'CompgenApiController@replaceImage');
Route::get('/replaceall/', 'CompgenApiController@replaceAllImages');
Route::get('/collage/', 'CompgenApiController@collage'); //@todo replace to POST
Route::get('/generate/', 'CompgenApiController@generate');
Route::post('/upload/', 'CompgenApiController@userUpload');
Route::post('/reupload/', 'CompgenApiController@moderationReupload');
Route::post('/feedback/', 'CompgenApiController@feedback');
});
我的应用程序/Http/Kernel.php
protected $middlewareGroups = [
'web' => [
\App\Http\Middleware\EncryptCookies::class,
\Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
\Illuminate\Session\Middleware\StartSession::class,
// \Illuminate\Session\Middleware\AuthenticateSession::class,
\Illuminate\View\Middleware\ShareErrorsFromSession::class,
\App\Http\Middleware\VerifyCsrfToken::class,
\Illuminate\Routing\Middleware\SubstituteBindings::class,
\Laravel\Passport\Http\Middleware\CreateFreshApiToken::class
],
'api' => [
'throttle:1000,1',
'bindings',
],
];
我的 app.js
window.axios.defaults.headers.common = {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRF-TOKEN' : $('meta[name="csrf-token"]').attr('content')
};
【问题讨论】:
-
CSRF 令牌不是访问令牌,它用于缓解Cross Site Request Forgery。
-
好的,我该如何解决我的问题?
-
您需要在 axios 请求中发送一个授权令牌,就像您使用机器人一样。向 axios 添加请求拦截器,并将令牌附加到每个出站请求。
-
这里是来自documentation的拦截器示例
-
是的,但在这种情况下,我将在请求标头中发送身份验证令牌。一些入侵者将能够通过这些信息破解我的应用程序
标签: laravel laravel-5 vue.js axios laravel-passport