我打开Laravel表格并将其保留很长时间(5/6小时)或者让我的电脑休眠。很长一段时间或在我提交表单后从休眠状态恢复后,它会显示Token Mismatch
错误。
我自己没有任何_token
字段。但Laravel以各种形式添加了_token
字段。它看起来像这样:
<input name="_token" type="hidden" value="YLyMGdfLKZESo51SYUHLKAzC6MNRLOQc9D9e2RFq">
我知道有一些Token到期问题。但是向客户端显示这样的错误消息是不好的。
现在,如果有任何令牌过期问题,我想将我的应用程序重定向到登录页面或主页,或者显示自定义错误消息而不是Laravel Token Mismatch
错误。
注意:我不想增加令牌过期时间。
答案 0 :(得分:2)
所有异常都由App \ Exceptions \ Handler类处理
Taka查看 Laravel 5.1 errors#render-method 您会发现可以创建自定义
Exeption render
,请查看以下示例,了解TokenMismatchException
错误,该错误会重定向用户使用自定义消息索引视图:
public function render($request, Exception $e)
{
if ($e instanceof \Illuminate\Session\TokenMismatchException) {
return response()->view('index', ['message' => 'custom message'], 500);
}
return parent::render($request, $e);
}
希望这有帮助。
答案 1 :(得分:1)
我还没有进入Laravel 5.1,但是从4.2开始,我使用了类似的东西来处理app/start/global.php
中的令牌不匹配错误:
App::error(function(Exception $exception, $code)
{
// if they get token mismatch, redirect to homepage
if( strpos($exception->__toString(), 'Illuminate\Session\TokenMismatchException') !== false ){
return Redirect::route('getHome')->with('notice', Lang::get('messages.sessionExpired'));
}
// rest of error handling...
});
我想象这需要对Laravel 5.1进行一些修改,但我希望它可以帮助你走上正轨!
以下是一些可能对您有帮助的链接: