【发布时间】:2018-07-09 21:35:46
【问题描述】:
我正在尝试在后端使用 Vuejs 和 Laravel 建立一个 SPA,这使得配置 web 路由以接受所有路径并返回主页但是
我所有使用 axios 的 ajax 请求
signin(context, data) {
axios.post(`${this.base_url}/api/signin`,data)
.then(response => {
context.error = false
localStorage.setItem('id_token', response.data.meta.token)
this.user.authenticated = true
this.user.profile = response.data.data
router.push({
path: '/'
})
}).catch(errors => {
console.dir(errors.response.data)
context.errors = errors.data
context.error = true
})
},
要去 laravel 网络路由
<?php Route::any('{all}', function () {return view('index'); })->where(['all' => '.*']);
而不是api路由
Route::group(['middleware' => ['api']], function () {
Route::post('/api/register', [
'uses' => 'Auth\AuthController@register',
]);
Route::post('/api/signin', [
'uses' => 'Auth\AuthController@signin',
]);
Route::group(['middleware' => 'jwt'], function () {
Route::get('/user', [
'uses' => 'UserController@index',
]);
});
});
谁能给我解释一下为什么会这样?
【问题讨论】:
-
您是否尝试注释掉 web-route 并查看请求是否被重定向到 api-route?我的猜测是网络路由正在捕获所有请求,因为您使用了通配符。
-
是的,但它抛出异常 route not defined 后来所做的是将我所有的路由移动到 web 和 web Guard 从 session 到 api
-
现在你所有的路线都在网络上?
-
是的,JWT 似乎在阻止它
-
但是 {all}-route 在 routes-file 中排在第一位吗?如果是这样,您可能希望将其放在文件末尾。
标签: php vuejs2 axios laravel-5.5