Laravel-已安装身份验证,但未找到注销路由

时间:2020-01-23 19:08:48

标签: php laravel

我制作了一个laravel系统,并包含了documentation中所述的Auth脚手架。我使用

进行了安装
composer require laravel/ui --dev

php artisan ui vue --auth

并运行npm installnpm run dev来编译资产。但是出于某些奇怪的原因,/logout路由返回了404。我的路由看起来像这样

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

Auth::routes();

我不知道在哪里看。我该如何解决?

2 个答案:

答案 0 :(得分:2)

如果您查看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');
});

答案 1 :(得分:0)

注销路径是其他人所说的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() }},因此我们可以发出该请求。