【发布时间】:2020-12-23 04:44:03
【问题描述】:
我想从 Vue 向 Laravel 发送一个请求,以更新当前登录用户的列。
到目前为止,我已经设置了 Vuex,我正在使用 axios 发送一个发布请求。但是我不断收到错误 419。这显然意味着它是 CSRF 令牌问题。
-
我如何将 CSRF 令牌解析到我的后端我的代码中的当前方法不起作用。
-
有没有更容易的替代路线。
api.php 中的路由
Route::group(['middleware' => 'web'], function () {
Route::post('prequalify', 'OfferController@update');
});
控制器
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;
class OfferController extends Controller
{
function update(Request $request){
$user = Auth::user();
return $user;
//Send Request to Majestic and get a response
$response = true;
if($response){
$user->is_qualified = true;
}else{
$user->is_qualified = false;
}
$user->save();
return $request;
}
}
Vue 方法 并且我能够获得 CSRF 令牌。
preQualify(){
let csrf= document.querySelector('meta[name="csrf-token"]').getAttribute('content')
this.$store.dispatch('prequalify',{csrf});
}
VUEX 操作
import axios from 'axios';
let actions = {
prequalify({commit,state}, payload){
axios.defaults.headers.common['X-CSRF-TOKEN'] = payload.csrf;
axios.post('/api/prequalify',state.LoanCalculator)
.then(res => {
console.log(res);
})
}
}
export default actions
【问题讨论】:
标签: php laravel api vue.js vuex