Laravel 5.1 avait vraiment une documentation minimale .. J'ai besoin d'une idée claire sur la façon de protéger les itinéraires à l'aide d'Auth middileware ..
La documentation indique d'ajouter le paramètre "middleware" => "auth" au routage. ou peut faire
public function __construct()
{
$this->middleware('auth');
}
Mais comment utiliser le middleware Auth pour l'authentification réelle des utilisateurs et la redirection automatique vers/se connecter à partir des routes protégées ??
Dans Kernel.php - il existe des middlewares enregistrés sous $ routeMiddleware comme ceci:
/**
* The application's route middleware.
*
* @var array
*/
protected $routeMiddleware = [
'auth' => 'App\Http\Middleware\Authenticate',
'auth.basic' => 'Illuminate\Auth\Middleware\AuthenticateWithBasicAuth',
'guest' => 'App\Http\Middleware\RedirectIfAuthenticated',
];
Vous pouvez voir que 'auth' est enregistré pour utiliser App\Http\Middleware\Authenticate.
Ensuite, vous pouvez suivre ce chemin - si vous ouvrez / app/Http/Middleware/Authenticate.php, vous trouverez le descripteur de fonction publique:
/**
* Handle an incoming request.
*
* @param \Illuminate\Http\Request $request
* @param \Closure $next
* @return mixed
*/
public function handle($request, Closure $next)
{
if ($this->auth->guest())
{
if ($request->ajax())
{
return response('Unauthorized.', 401);
}
else
{
return redirect()->guest('auth/login');
}
}
return $next($request);
}
et c'est ici que la redirection est gérée, et vous pouvez la modifier selon vos propres besoins, ou vous pouvez créer un middleware personnalisé.
enfin - comme il est écrit dans la documentation - dans le contrôleur, qui devra être authentifié, vous ajouterez
public function __construct()
{
$this->middleware('auth');
}
Vous pouvez créer un middleware personnalisé si ceux fournis ne correspondent pas à vos besoins.
Sur laravel 5.2 si vous souhaitez masquer le formulaire d'inscription ou les vues du formulaire de connexion, vous devez utiliser votre middleware comme:
$this->middleware('mymiddleware', ['only' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);
OR
$this->middleware('mymiddleware', ['except' => ['register', 'showRegistrationForm', 'login', 'showLoginForm']]);
C'est parce que les routes d'enregistrement et de connexion sont les méthodes de publication sur AuthController tandis que showXxxxForm sont les vues de formulaire.
J'espère que cela aide n'importe qui.