【问题标题】:Laravel 5 Auth middleware works after csrf in post requestsLaravel 5 Auth 中间件在 post 请求中的 csrf 之后工作
【发布时间】:2016-07-27 14:03:47
【问题描述】:

我有一组路由,需要受 Auth 中间件保护。我使用标准的 Auth 过滤器。

Route::group(['middleware' => 'auth'], function () {
    Route::get('....', '....');
    Route::post('....', '....');
    ...

它适用于 GET 请求,但是当我执行 POST 请求时,我看到了令牌不匹配异常。我认为,CSRF 中间件在 Auth 之前工作。如何更改这些过滤器的顺序?我需要查看未经授权的异常才能从 ajax-requests 进行重定向。

【问题讨论】:

    标签: php laravel laravel-5


    【解决方案1】:

    我从您的问题中得到的问题是当您发送 POST 表单时。所以在 laravel 的 post 形式中需要一个令牌安全性。 例如,在您的申请表中写下这个

    <form method="POST">
         <input type="hidden" name="_token" value="{!! csrf_token() !!}">
         blah blah blah ...
       </form>
    

    在此之后尝试发送请求并且可以正常工作

    【讨论】:

      【解决方案2】:

      app/Http/Kernel.php 中,有Web 中间件的声明。相应地更改顺序,或者您可以暂时禁用它以调试代码

      Web 中间件组包含VerifyCsrfToken::class 以防止CSRF 注入POST 请求。如果您在表单中的 POST 请求期间包含 csrf_token,则应该解决表单不匹配错误。

      <input type="hidden" name="_token" value="{!! csrf_token() !!}">
      

      【讨论】:

        猜你喜欢
        • 2016-03-29
        • 2013-06-24
        • 2016-11-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-04
        • 2020-04-14
        • 2015-12-20
        相关资源
        最近更新 更多