Laravel - Auth установлен, но маршрут выхода не найден - PullRequest
0 голосов
/ 23 января 2020

Я создал систему laravel и включил в нее леса Auth, указанные в документации . Я установил его, используя

composer require laravel/ui --dev

php artisan ui vue --auth

И запустив npm install и npm run dev для компиляции ресурсов. Но по какой-то странной причине маршрут /logout возвращает 404. Мои маршруты выглядят так

Route::get('/', function () {
    return view('welcome');
});

Auth::routes();

Я не знаю, где искать. Как я могу это исправить?

Ответы [ 2 ]

2 голосов
/ 23 января 2020

Если вы посмотрите на vendor/laravel/framework/src/Illuminate/Routing/Router.php, вы увидите этот фрагмент кода:

public function auth(array $options = [])
{
    // Authentication Routes...
    $this->get('login', 'Auth\LoginController@showLoginForm')->name('login');
    $this->post('login', 'Auth\LoginController@login');
    $this->post('logout', 'Auth\LoginController@logout')->name('logout');
...

Это означает, что для выхода не определен GET маршрут, только POST. Вот почему вы получаете ответ 404. Вы можете самостоятельно добавить один GET маршрут с пользовательской страницей, например:

Route::get('/logout', function () {
    return view('my_logout_view');
});
0 голосов
/ 23 января 2020

Маршрут выхода из системы является запросом POST, как указано другими. Если вы хотите использовать его, вы

 <a href="{{ route('logout') }}" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">Logout</a>

<form id="logout-form" action="{{ route('logout') }}" method="POST" class="hidden">
{{ csrf_field() }}
</form>

Обратите внимание, что method в форме установлено на POST и что мы используем {{ csrf_field() }}, поэтому мы можем сделать этот запрос.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...