Ik gebruik Laravel 5.4 en probeer een authenticatiesysteem te implementeren. Ik heb het php artisan-commando make:auth gebruikt om het in te stellen. Ik heb de weergaven bewerkt volgens mijn lay-out. Nu, wanneer ik probeer uit te loggen, krijg ik deze foutmelding
NotFoundHttpException in RouteCollection.php regel 161:
Kan iemand mij helpen hoe uit te loggen?
Antwoord 1, autoriteit 100%
In uw web.php
(routes):
toevoegen:
Route::get('logout', '\App\Http\Controllers\Auth\[email protected]');
In uw LoginController.php
toevoegen:
public function logout(Request $request) {
Auth::logout();
return redirect('/login');
}
Ook bovenaan LoginController.php
, na namespace
toevoegen:
use Auth;
U kunt nu uitloggen met de yourdomain.com/logout
URL of als u een logout button
heeft gemaakt, voeg href toe aan /logout
Antwoord 2, autoriteit 34%
Nou, zelfs als de suggestie van @Tauras gewoon werkt, denk ik niet dat dit de juiste manier is om hiermee om te gaan.
Je zei dat je php artisan make:auth
hebt uitgevoerd, wat ook Auth::routes();
had moeten invoegen in je routes/web.php
routeringsbestanden. Die wordt geleverd met de standaard logout
-route die al is gedefinieerd en wordt logout
genoemd.
Je kunt het hier op GitHub bekijken , maar ik zal de code hier ook voor de eenvoud rapporteren:
/**
* Register the typical authentication routes for an application.
*
* @return void
*/
public function auth()
{
// Authentication Routes...
$this->get('login', 'Auth\[email protected]')->name('login');
$this->post('login', 'Auth\[email protected]');
$this->post('logout', 'Auth\[email protected]')->name('logout');
// Registration Routes...
$this->get('register', 'Auth\[email protected]')->name('register');
$this->post('register', 'Auth\[email protected]');
// Password Reset Routes...
$this->get('password/reset', 'Auth\[email protected]')->name('password.request');
$this->post('password/email', 'Auth\[email protected]')->name('password.email');
$this->get('password/reset/{token}', 'Auth\[email protected]')->name('password.reset');
$this->post('password/reset', 'Auth\[email protected]');
}
Houd er rekening mee dat logout
vereistPOST
als HTTP-verzoekmethode. Hier zijn veel geldige redenen voor, maar om er één te noemen die erg belangrijk is, is dat u op deze manier vervalsing van verzoeken over meerdere siteskunt voorkomen.
Dus volgens wat ik zojuist heb aangegeven, zou een juiste manier om dit te implementeren precies dit kunnen zijn:
<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>
Ten slotte merk ik op dat ik de laravel kant-en-klare functie {{ csrf_field() }}
heb ingevoegd!
Antwoord 3, autoriteit 11%
Je kunt het volgende in je controller gebruiken:
return redirect('login')->with(Auth::logout());