Larave 8 jetstream 域/注销不起作用

问题描述

当我尝试 http://domain.test/logout显示“此路由不支持 GET 方法支持方法:POST”

但是使用 post 方法正常注销工作正常。如何更改 /logout 路由 Post 以获取。 在 Jetstream,设防

解决方法

如果您使用 php artisan route:list 列出您的路由,您会看到为 POST 定义了注销路由,因此您只需要向该路由提交一个表单即可触发注销。

发布 |登出 | Laravel\Fortify\Http\Controllers\AuthenticatedSessionController@destroy |网络

现在,如果您希望将该函数转换为响应 GET 方法,则需要在 /vendor/laravel/fortify/routes/route.php

中更改该路由

我没有以任何方式对其进行测试,但方法和路线都在那里。

,

如果还有人在寻找它,你可以试试这个。 在 Laravel 8 中,get 方法不支持注销路由,您可以尝试像下面这样的 post 方法。

    <form method="POST" action="{{ route('logout') }}">
        @csrf
        <div class="nav-item">
            <a class="nav-link" href="{{ route('logout') }}" onclick="event.preventDefault();
                        this.closest('form').submit(); " role="button">
                <i class="fas fa-sign-out-alt"></i>

                {{ __('Log Out') }}
            </a>
        </div>

您也可以通过签入来尝试此操作,如果它已登录,则会显示您已注销,否则会显示您已登录。

@if (auth()->id())
    <form method="POST" action="{{ route('logout') }}">
        @csrf
        <div class="nav-item">
            <a class="nav-link" href="{{ route('logout') }}" onclick="event.preventDefault();
                        this.closest('form').submit(); " role="button">
                <i class="fas fa-sign-out-alt"></i>

                {{ __('Log Out') }}
            </a>
        </div>
    </form>
@else
    <li class="nav-item">
        <a class="nav-link" href="{{ route('login') }}" role="button">
            <i class="fas fa-sign-in-alt"></i>
            Login
        </a>
    </li>
@endif