代码之家  ›  专栏  ›  技术社区  ›  Kenziiee Flavius

Laravel“由于不活动,页面已过期”

  •  7
  • Kenziiee Flavius  · 技术社区  · 6 年前

    错误

    Enter image description here

    我的方案

    首先,我知道此错误消息是 CSRF /会话错误消息,这很好;事实上,它的行为符合预期。出于特定于我的应用程序的原因,我这样做是为了访问一个帐户,我会发送一个post请求,并根据响应数据构建页面。

    问题是,当该页面上的会话超时时,我的应用程序不会执行任何操作,而是抛出此错误消息。然后,我必须输入一个URL以重定向到登录页面,这对客户端来说并不理想。

    我的问题

    如何控制应用程序的行为,以便修改发生此CSRF错误时发生的情况,例如,如果我想创建自定义页面或使用控制器执行重定向等。?

    区别在于我知道这个错误是什么。我想要一种在出现此错误时重定向的方法,我不是试图阻止错误显示,而是试图从中重定向。就我而言,这不是一个错误;这是我所期待的行为!

    1 回复  |  直到 6 年前
        1
  •  11
  •   Kenziiee Flavius    6 年前

    在您的 app/Exceptions/Handler.php 在里面 render 函数添加行:

        if ($e instanceof \Illuminate\Session\TokenMismatchException) {
    
            return redirect('/login')->with('message', 'Sorry, your session seems to have expired. Please login again.');
    
       }
    

    行前:

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

    这应该重定向到在令牌不匹配时登录。

    链接进一步解释: https://gist.github.com/jrmadsen67/bd0f9ad0ef1ed6bb594e