我有一個創建卡片的表單,這個表單是公開的,當一個人填寫了這個表單并希望發布他們的卡片時,他們被要求登錄,或者如果他們是新用戶則被要求注冊。
我想,當要求登錄時,沉浸在表單中的令牌會過期,并拋出419錯誤。
我怎樣才能登錄并更新令牌以避免出現 419 錯誤?
我不是Laravel的專家,所以任何建議都會被感謝。
這里是我已經實作的部分代碼
通過AJAX登錄$(function (/span>) {
$('#login-form').on('submit', function(e) /span>{
e.preventDefault()。
var form = $(this);
var url = form.prop('action')。
let data = form.serializeArray();
console.log(data)。
$.ajax({
型別。"post",
headers: {
接受。"application/json"。
},
url: 網址。
data: form.serializeArray(),
成功。function(json){
console.log('OK')
},
error: function(json) /span>{
console.log('NOK')
alert(json)。
},
});
});
});
控制器
public function __construct()
{
$this->middleware('create.card.newuser')->only('store') 。
$this->middleware('auth')->except(['create', 'store']) 。
}
中間件 "CreateCardIfNewUser"
public function handle(Request $request, Closure $next)
{
if ( ! Auth::user() )
{
return redirect()->route('digital_card.create')->with('openModalLogin', true)
->withInput($request-> all())。
}
return $next($request)。
}
查看'layouts.app'
@if(session()-> has('openModalLogin'))
<腳本>
$('#login-modal').modal({
顯示。true>。
});
</script>
@endif
uj5u.com熱心網友回復:
將csrf_token傳給資料:
...
data : { >。
_token: "{{ csrf_token() }}"
}
uj5u.com熱心網友回復:
你的錯誤是由于沒有csrf標記。這個解決方案不僅對這個問題有效。每次你遇到419這個問題時,你必須立即想到csrf標記
。data: {
_token: "{{ csrf_token() }}"/span>
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/324222.html
標籤:
