我打开了一张Laravel表格,并把它保存了很长一段时间(5-6小时),或者让我的电脑冬眠。经过很长时间或从hibernate恢复之后,当我提交表单时,它显示了一个TokenMismatchException。
我自己没有任何_token字段。但是_token字段是由Laravel以各种形式添加的。看起来是这样的:
<input name="_token" type="hidden" value="YLyMGdfLKZESo51SYUHLKAzC6MNRLOQc9D9e2RFq">我知道存在一些令牌过期问题,但是向客户端显示这样的错误消息是很糟糕的。
现在,如果令牌过期,我希望将应用程序重定向到登录页或主页,或者显示自定义错误消息,而不是Laravel Token Mismatch错误。
注意:我不想增加令牌过期时间。
发布于 2015-12-16 11:19:49
所有异常都由App\Exception\Handler类处理。
查看一下Laravel5.1错误#渲染-方法,您会发现您可以创建一个自定义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);
}希望这能有所帮助。
发布于 2015-12-16 11:07:40
我还没有达到Laravel5.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...
});我想这需要对Laravel5.1进行一些修改,但我希望它能帮助你走上正确的轨道!
以下是一些可能对您有帮助的链接:
https://stackoverflow.com/questions/34310021
复制相似问题