Laravel 5.3 - VerifyCsrfToken.php第68行中的TokenMismatchException:

Mar*_*rco 6 laravel-5.3

当我登录我的应用程序,并在我输入时立即返回,然后尝试注销,我从标题中得到错误,我该如何解决?

Man*_*kar 8

我在laravel 5.4中面临同样的问题..然后以下命令对我有用:)

chmod 777存储/框架/会话/

在此之前,它是chmod 775 storage/framework/sessions/...因此我遇到了这个问题......

快乐的编码

  • 在StackOverFlow中,我们厌倦了说"chmod 777是一个坏主意".您正在允许**任何人**写在该文件夹上.如果有人获得对该文件夹的访问权限并上传脚本以列出所有用户或删除用户表,该怎么办? (6认同)

小智 5

我通过编辑文件config->session.php解决了这个问题

'domain' => env('SESSION_DOMAIN', null),
Run Code Online (Sandbox Code Playgroud)

并从文件 (.env) 中删除SESSION_DOMAIN

最后是composer dumpautoload


usr*_*und 3

来自 Laravel 5.3 文档

Auth::routes 方法现在为 /logout 注册 POST 路由,而不是 GET 路由。这可以防止其他 Web 应用程序将您的用户从您的应用程序中注销。要升级,您应该将注销请求转换为使用 POST 动词,或者为 /logout URI 注册您自己的 GET 路由:

选项一: Route::get('/logout', 'Auth\LoginController@logout');

有关升级的更多信息,请查看此https://laravel.com/docs/5.3/upgrade

选项2

//Insert this on your head section
<!-- CSRF Token -->
<meta name="csrf-token" content="{{ csrf_token() }}">

<!-- Scripts -->
<script>
    window.Laravel = <?php echo json_encode([
        'csrfToken' => csrf_token(),
    ]); ?>
</script>
Run Code Online (Sandbox Code Playgroud)

您希望在哪里注销

 <ul class="dropdown-menu" role="menu">
   <li>
       <a href="{{ url('/logout') }}" onclick="event.preventDefault();
            document.getElementById('logout-form').submit();"> Logout
         </a>

        <form id="logout-form" action="{{ url('/logout') }}" method="POST" style="display: none;">
             {{ csrf_field() }}
         </form>
   </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

干杯