web-dev-qa-db-fra.com

Utilisation de Laravel Middleware Auth

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 ??

9
harish

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.

12
Angel M.

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.