【问题标题】:How to handle token mismatch exception when user delete the hidden token from firebug?用户从firebug中删除隐藏令牌时如何处理令牌不匹配异常?
【发布时间】:2017-09-11 16:23:24
【问题描述】:

我正在开发 laravel 5.2 框架,我正在维护和保护我们的代码。现在我面临一个问题。假设有一个这样的登录表单:-

<form id="userLoginForm" method="post" action="{{ url('/login') }}">{{csrf_field()}}
 <label>Email: </label>
 <input type="text" name="email" autocomplete="off" placeholder="Email" class="input-style" />
<label>Password: </label>
<input type="password" name="password" autocomplete="off" placeholder="Password" class="input-style" />
<input type="submit" class="green-btn-style" value="LOGIN" />

现在我的表单看起来像萤火虫:-

现在假设我按下键盘上的删除按钮,现在令牌已从我们的表单中删除。现在当我提交表格时。它将向我显示令牌不匹配的预期。但我不想向黑客或用户显示该错误.. 我也实现了 isset 但没有工作。 我的登录代码:-

if(isset($data['email']) && isset($data['password']) && isset($data['_token']) && Auth::attempt(['email' => $data['email'],'password' => $data['password']])) {
 //redirect to dashboard
}

谁能帮我解决这个问题。

【问题讨论】:

  • 如果您将调试变量.env 设置为false,他们将看到“哎呀!出了点问题”
  • 它已经显示出了问题!

标签: php laravel laravel-5.2


【解决方案1】:

异常由文件处理

app/Exceptions/Handler.php

在 Laravel 中。您可以捕获令牌不匹配异常并执行所需的操作。示例代码是

use Illuminate\Session\TokenMismatchException;

要仅捕获 Token Mismatch 异常,您可以将其添加到 render 方法

if ($exception instanceof TokenMismatchException) {

           return response()->view('errors.400', [], 400); // load any view of your choice
        }

【讨论】:

  • 它不会中止(404);只有空白屏幕来了
  • 更新代码以返回错误视图。视图必须存在于 Laravel 资源/视图文件夹中
  • 现在显示:- 此页面不工作 localhost 当前无法处理此请求。 HTTP 错误 500
猜你喜欢
  • 2016-03-22
  • 1970-01-01
  • 2017-10-17
  • 2016-12-06
  • 2017-10-24
  • 2017-07-03
  • 1970-01-01
  • 2014-03-30
相关资源
最近更新 更多