je suis nouveau à laravel,
j'ai du code dans la __construct de mon contrôleur comme
if(Auth::check())
{
return View::make('view_page');
}
return Redirect::route('login')->withInput()->with('errmessage', 'Please Login to access restricted area.');
ça marche bien, mais ce que je veux c'est. son vraiment ennuyeux de mettre ces codages dans chaque contrôleur, donc je souhaite mettre cette vérification d'authentification et rediriger vers la page de connexion en un seul endroit, peut être dans router.php
ou filters.php
.
J'ai lu certains messages dans le forum ainsi que dans stackoverflow
, et ajouté du code dans filters.php
comme ci-dessous, mais cela ne fonctionne pas non plus.
Route::filter('auth', function() {
if (Auth::guest())
return Redirect::guest('login');
});
Veuillez m'aider à résoudre ce problème.
Utilisez le middleware auth
intégré.
Route::group(['middleware' => ['auth']], function() {
// your routes
});
Pour un trajet unique:
Route::get('profile', function () {
// Only authenticated users may enter...
})->middleware('auth');
C'est déjà intégré à laravel. Voir le filtre auth
dans filters.php
. Ajoutez simplement le filtre avant à vos itinéraires. Utilisez de préférence un groupe et enroulez-le autour de vos itinéraires protégés:
Route::group(array('before' => 'auth'), function(){
// your routes
Route::get('/', 'HomeController@index');
});
Ou pour un seul itinéraire:
Route::get('/', array('before' => 'auth', 'uses' => 'HomeController@index'));
Pour modifier l'URL de redirection ou envoyer des messages, modifiez simplement le filtre dans filters.php
à votre convenance.
C'est absolument correct ce que les autres ont répondu. Cette solution est pour Laravel 5.4 Mais juste au cas où, si vous avez plus d'un middleware s'appliquant aux routes, assurez-vous que le middleware 'auth' arrive à la fin et non au début.
Comme ça:
Route::prefix('/admin')->group(function () {
Route::group(['middleware' => 'CheckUser', 'middleware' => 'auth'], function(){
});
});
Pour éviter la répétition du code, vous pouvez l'utiliser dans le middleware. Si vous utilisez le Laravel build in Auth, Vous pouvez utiliser directement le auth
middleware donné,
Route::group(['middleware' => ['auth']], function() {
// define your route, route groups here
});
ou, pour un seul itinéraire,
Route::get('profile', function () {
})->middleware('auth');
Si vous créez votre propre système d'authentification personnalisé. Vous devez utiliser le middleware qui vérifiera que l'utilisateur est authentifié ou non. Pour créer un middleware personnalisé, exécutez php artisan make:middleware Middelware_Name_Here
et enregistrez le middleware nouvellement créé.