Laravel + Vue.js (axios) 使用网络路由 - 未经身份验证

Posted

技术标签:

【中文标题】Laravel + Vue.js (axios) 使用网络路由 - 未经身份验证【英文标题】:Laravel + Vue.js (axios) using web route - Unauthenticated 【发布时间】:2022-01-01 20:10:33 【问题描述】:

我有我的路由/web.php,如下所示:

Route::prefix('espace')->middleware(['auth'])->group(function () 
    Route::get('conversation/id', [MessageController::class, 'get_message'])->name('conversation.message');
    Route::post('searchUser', [UserController::class, 'search'])->name('user.search');
    Route::post('sendMessage', [MessageController::class, 'send_message'])->name('message.send');
    Route::post('getConversation', [MessageController::class, 'all_conversation'])->name('conversation.all');
);

我尝试使用 axios 在 vue js 上使用它们;

在我的刀片中,我有这个:

<meta name="csrf-token" content=" csrf_token() ">

在我的 bootsrapt.js 中: let token = document.head.querySelector('meta[name="csrf-token"]');

window.axios = require('axios');
if (token) 
    window.axios.defaults.headers.common['X-CSRF-TOKEN'] = token.content;
 else 
    console.error('CSRF token not found: https://laravel.com/docs/csrf#csrf-x-csrf-token');

window.axios.defaults.headers.common['X-Requested-With'] = 'XMLHttpRequest';

我的 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,
        ],

        'api' => [
            // \Laravel\Sanctum\Http\Middleware\EnsureFrontendRequestsAreStateful::class,
            'throttle:api',
            \Illuminate\Routing\Middleware\SubstituteBindings::class,
        ],
    ];

我已经收到了我的 csrf 令牌

,

用户已登录,但根据请求我收到错误 401“未验证”

【问题讨论】:

【参考方案1】:

X-CSRF-TOKEN - 不是用于身份验证的令牌, 当您的路由使用 cookie 进行身份验证来保护“auth”中间件时

【讨论】:

您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center。 我该怎么办

以上是关于Laravel + Vue.js (axios) 使用网络路由 - 未经身份验证的主要内容,如果未能解决你的问题,请参考以下文章

从子组件更新数据 - Vue.js/Axios/Laravel

Laravel + Vue.js (axios) 使用网络路由 - 未经身份验证

在 Vue.js 中使用 axios 向 Laravel API 发送获取请求

在 axios 调用时,DOM 不显示 vue.js 和 laravel 中数组的更新数据

无法通过 Vue.js(Axios 帖子)从 Laravel 后端下载文件(pdf)

Vue Js - axios 的问题使用 laravel 执行多个并发请求