Как решить проблему выхода из системы в Laravel? - PullRequest
0 голосов
/ 10 октября 2019

Я получаю сообщение об ошибке, когда я выхожу, это показывает мне эту ошибку ... "Метод GET не поддерживается для этого маршрута. Поддерживаемые методы: POST." Пожалуйста, помогите мне решить эту проблему ..

Вот мой код ...

@if(Auth::check())
  <li><i class="fa fa-user"></i> {{Auth::user()->name}}:
    <a href="{{url('logout')}}">logout</a>
  </li>
@else
  <li>
    <a href="{{route('login')}}"><i class="fa fa-user"></i>Login</a>
  </li>
@endif

Ответы [ 5 ]

1 голос
/ 10 октября 2019

Вы можете просто добавить эту строку в ваш web.php файл маршрутов:

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

Это позволяет вам выйти из системы с помощью запроса GET.

0 голосов
/ 10 октября 2019
@if(Auth::check())
  <li><i class="fa fa-user"></i> {{Auth::user()->name}}:
    <a href="{{ route('logout') }}" onclick="event.preventDefault();document.getElementById('frm-logout').submit();">Logout</a>    
    <form id="frm-logout" action="{{ route('logout') }}" method="POST" style="display: none;">
        {{ csrf_field() }}
    </form>
  </li>
@else
  <li>
    <a href="{{route('login')}}"><i class="fa fa-user"></i>Login</a>
  </li>
@endif
0 голосов
/ 10 октября 2019

Используйте

<a href="{{ route('logout') }}">Logout</a>

и в файле маршрута

Route::get('logout', function ()
{
    auth()->logout();
    Session()->flush();

    return Redirect::to('/');
})->name('logout');
0 голосов
/ 10 октября 2019

Метод GET не поддерживается для выхода из системы. Laravel 5.4+ использует метод post для выхода из системы, поэтому вместо простого запроса GET вы должны отправить форму для выхода из системы.

Пример. :

<form id="logout-form" action="{{ url('logout') }}" method="POST">
            {{ csrf_field() }}
    <button type="submit">Logout</button>
</form>

Изменить код:

@if(Auth::check())
<li><i class="fa fa-user"></i> {{Auth::user()->name}}:</li>
        <form id="logout-form" action="{{ url('logout') }}" method="POST">
                    {{ csrf_field() }}
            <button type="submit">Logout</button>
        </form>
      @else
    <li><a href="{{route('login')}}"><i class="fa fa-user"></i>
            Login
        </a>
    </li>
@endif
0 голосов
/ 10 октября 2019

Вы используете атрибут href ссылки для вызова соответствующего URL - однако эти ссылки всегда используют вызовы GET HTTP для открытия / вызова соответствующей цели. Как указывается в сообщении об ошибке, цель, которую вы вызываете, ожидает HTTP-вызова POST.

Зная, в чем заключается ваша проблема, вы, вероятно, найдете этот ответ StackOverflow, который должен помочь вам решить проблему таким образом, чтобывас устраивает: Создание поста запроса тега привязки href вместо get

...