Laravel 护照授权错误
Posted
技术标签:
【中文标题】Laravel 护照授权错误【英文标题】:Laravel Passport Authroziation error 【发布时间】: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的拦截器示例 是的,但在这种情况下,我将在请求标头中发送身份验证令牌。一些入侵者将能够通过这些信息破解我的应用程序 【参考方案1】:您是否将您的 api 保护提供程序更改为“护照”?在 config/auth.php 上
【讨论】:
我明白了,(对不起,我的意思是司机)。当您使用 js 或 vue 使用自己的 API 时,不应发送任何 Authorization Header。\Laravel\Passport\Http\Middleware\CreateFreshApiToken
中间件会在每个经过身份验证的用户的请求上发送一个名为 laravel_token 的 cookie。
但我已经添加了 \Laravel\Passport\Http\Middleware\CreateFreshApiToken::class以上是关于Laravel 护照授权错误的主要内容,如果未能解决你的问题,请参考以下文章
用户未经授权时的 Laravel 护照自定义错误消息和状态码
Laravel 护照 oauth 路线总是返回 401 未经授权