naremloa

导航

【laravel開發隨筆】csrf_token問題

在通過post請求向後台提交數據時,若是當前沒有關閉csrf保護,會返回一個500的錯誤提示token不匹配,拒絕接受數據。

背景:laravel 5.4 + vue

問題:無法向後台提交數據

解決方案:
除了官方文檔寫的解決方案(這種用form來整合提交數據並隱式帶上token限制頗多,用起來也不方便),提供另一個方案。

最終問題症點在於,當使用post請求提交數據時,提交的數據裡沒有某個該有的字段,導致數據在經過路由受中間件檢查時,被阻擋回來。

對某數據 

let data = {
    title: '',
    content: '',
};

 如果數據要過post請求,一律帶上字段_token

let data = {
    title: '',
    content: '',
    _token: this.csrf_token
};

 

但在寫vue組件時,會發現另一個問題。無論是csrf_token(),還是csrf_field(),都無法調用。官方文檔給出了解決辦法:

你需要在主要佈局手動定義一個Laravel對象

<script>
    window.Laravel = {!! json_encode([
        'csrfToken' => csrf_token(),
    ]) !!};
</script>

之後再通過正常的數據流流進相關組件中使用即可。

posted on 2018-02-25 19:36  naremloa  阅读(119)  评论(0)    收藏  举报