TokenMismatchException可以使用try catch块捕获吗?我想要它显示实际页面并只显示错误消息,而不是显示显示“ VerifyCsrfToken.php第46行的TokenMismatchException ...” 的调试页面。
CSRF没有问题,我只是想让它继续显示页面而不是调试页面。
复制(使用Firefox):
- 打开页面(http://example.com/login)
- 清除Cookie(域名、路径、会话)。我在这里使用Web Developer工具栏插件。
- 提交表单。
实际结果:显示“哎呀,似乎出了些问题”的页面。 期望结果:仍然显示登录页面,然后传递“令牌不匹配”或类似的错误。
请注意,当我清除Cookie时,我没有刷新页面以生成新密钥并强制出错。
更新(添加表单):
<form class="form-horizontal" action="<?php echo route($formActionStoreUrl); ?>" method="post">
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>" />
<div class="form-group">
<label for="txtCode" class="col-sm-1 control-label">Code</label>
<div class="col-sm-11">
<input type="text" name="txtCode" id="txtCode" class="form-control" placeholder="Code" />
</div>
</div>
<div class="form-group">
<label for="txtDesc" class="col-sm-1 control-label">Description</label>
<div class="col-sm-11">
<input type="text" name="txtDesc" id="txtDesc" class="form-control" placeholder="Description" />
</div>
</div>
<div class="form-group">
<label for="cbxInactive" class="col-sm-1 control-label">Inactive</label>
<div class="col-sm-11">
<div class="checkbox">
<label>
<input type="checkbox" name="cbxInactive" id="cbxInactive" value="inactive" />
<span class="check"></span>
</label>
</div>
</div>
</div>
<div class="form-group">
<div class="col-sm-12">
<button type="submit" class="btn btn-primary pull-right"><i class="fa fa-save fa-lg"></i> Save</button>
</div>
</div>
</form>
这里没有什么特别的东西,只是一个普通的表单。正如我所说,表单完全正常地工作着。只是当我执行上述步骤时,由于令牌过期而出现错误。我的问题是,这个表单是否应该这样运行?我的意思是,每当我清除 cookie 和 session 时,我都需要重新加载页面吗?这就是 CSRF 在这里起作用的方式吗?