我想陷阱TokenMismatchException在Laravel的Handler.phpLaravel異常處理程序沒有捕捉TokenMismatchException
當我通過暫時去除形式令牌模仿CSRF令牌例外,我的網站的本地開發版本顯示我:
TokenMismatchException in VerifyCsrfToken.php line 68:
但是,當我改變Handler.php中的render()函數來尋找異常並處理錯誤,那麼它不起作用。例如,如果我將下面的默認代碼替換爲測試代碼,並從表單中取出csrf標記,則系統會返回「這不是標記問題」消息,而不是「標記問題」消息。
public function render($request, Exception $exception)
{
if($exception instanceof TokenMismatchException) {
return('token problem');
}else{
return('this was not a token problem');
}
return parent::render($request, $exception);
}
所以,用默認代碼Laravel似乎認識到了TokenMismatchException,但我上面的簡單測試代碼,它沒有。你能向我解釋發生了什麼事嗎?
每一個評論者:[DisgruntledGoat](HTTP ://stackoverflow.com/users/37947/disgruntledgoat)[這個答案](http://stackoverflow.com/a/29116516/1575353),你有'使用Illuminate \ Session \ TokenMismatchException;'類定義之前? –
我在我的搜索過程中看到DisgruntledGoat的答案,並且實現它無濟於事,所以它不在當前代碼中。現在,通過重新包含使用聲明並通過實施Ian建議的http響應,我最終可以捕獲異常並重定向到另一個頁面,告訴用戶再次嘗試,或者我決定做的任何事情。這是我使用Laravel創建的第一個網站 - 它是來自CodeIgniter的學習曲線! – Wittner