首页 > 解决方案 > Laravel 子文件夹 - axios 帖子不起作用

问题描述

我正在尝试在子文件夹中使用 jwt 使用 Laravel 和 Vue 构建 SPA,但由于某种原因,我在加载页面时得到 405 Method Not Allowed。这是代码:

helper.js 中的方法

export default {
    check() {
        return axios.post('api/auth/check').then(response =>  {
            return !!response.data.authenticated;
        }).catch(error => {
            return response.data.authenticated;
        });
    }
}

Vue 路线

router.beforeEach((to, from, next) => {
    if (to.matched.some(r => r.meta.requiresAuth)){
        return helper.check().then(response => {
            if (!response){
                return next({ path : '/unikit/login'});
            }

            return next();
        });
    }

    if (to.matched.some(m => m.meta.requiresGuest)) {
        return helper.check().then(response => {
            if (response) {
                return next({ path : '/unikit'});
            }

            return next();
        });
    }

    return next();
});

export default router;

api中的路由:

Route::group(['prefix' => 'auth'], function () {
    Route::post('/unikit/check','AuthController@check');
});

控制器方法:

public function check()
{
    try {
        JWTAuth::parseToken()->authenticate();
    } catch (JWTException $e) {
        return response(['authenticated' => false]);
    }

    return response(['authenticated' => true]);
}

还尝试在路线中删除“unikit”目录和斜线,但没有任何反应。

标签: laravelvue.jssingle-page-application

解决方案


经过两个小时的思考,我找到了解决方案。子文件夹需要修改 Provider 中 api 路由的前缀。Route::prefix('/subfolder/api')问题解决了!谢谢大家的帮助!


推荐阅读