令牌不匹配仅在每次第一次尝试laravel 5.1时出现异常

时间:2015-07-17 00:00:53

标签: php laravel

每次我在大约一小时左右后第一次登录我的应用程序或每次新设备时都会遇到令牌不匹配异常。但是当我在问题消失后再次尝试时。我在存储/框架/会话上使用755 - 我在我当地的流浪汉苏格兰威士忌盒1.5盒以及onmy Digital Ocean LAMP上遇到了同样的问题。有什么想法吗?

2 个答案:

答案 0 :(得分:0)

问题是CSRF令牌已过期,您的浏览器需要新令牌才能发出POST请求。 Laravel默认的到期时间为2小时。

我遇到同样的问题,我正在尝试此解决方案https://laracasts.com/discuss/channels/general-discussion/crsf-checked-before-auth

更新:

您需要更新app / Exceptions / Handler.php中的render方法并处理Exception:TokenMismatchException

代码示例

   /**
     * Render an exception into an HTTP response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Exception  $e
     * @return \Illuminate\Http\Response
     */
    public function render($request, Exception $e)
    {
        if ($e instanceof \Illuminate\Session\TokenMismatchException) {
            return redirect('/')->with('message', 'Sorry, your session seems to have expired. Please login again.');
        }

        if ($e instanceof ModelNotFoundException) {
            $e = new NotFoundHttpException($e->getMessage(), $e);
        }

        return parent::render($request, $e);
    }

答案 1 :(得分:-1)

我不能告诉你,如果你正在为Laravel项目编写代码,那么你应该尝试一下宅基地盒,我现在已经使用它一年了,没有发生任何奇怪的问题,我的登录工作完美无缺。

http://laravel.com/docs/5.1/homestead

也许这可以帮助你更快地解决当前盒子上的问题:)