Maison  >  Article  >  cadre php  >  saut par défaut de connexion Laravel

saut par défaut de connexion Laravel

WBOY
WBOYoriginal
2023-05-20 19:03:37486parcourir

Laravel est un framework PHP très populaire qui fournit de nombreuses fonctions pratiques et puissantes pour aider les développeurs à développer des applications Web plus rapidement et plus efficacement. L'une des fonctionnalités puissantes est le système de connexion des utilisateurs. Dans Laravel, vous pouvez créer rapidement un système d'authentification utilisateur pour connecter les utilisateurs à votre application. De nombreuses fonctions courantes d'authentification des utilisateurs telles que l'enregistrement, la connexion, la réinitialisation du mot de passe, etc. peuvent être facilement mises en œuvre à l'aide de codes simples.

Lorsqu'un utilisateur se connecte avec succès à votre application, Laravel redirige l'utilisateur vers le répertoire racine de l'application par défaut. Cependant, vous souhaitez parfois que les utilisateurs soient redirigés vers une page spécifique après la connexion, comme le profil de l'utilisateur ou le panneau de configuration. Dans cet article, nous expliquerons comment définir l'URL de redirection de connexion par défaut dans Laravel.

Tout d’abord, examinons le fonctionnement du système d’authentification des utilisateurs de Laravel. Laravel utilise guard par défaut pour gérer l'authentification des utilisateurs, et le garde "web" est le garde utilisé par Laravel par défaut. Avant d'utiliser guard, vous devez le configurer dans le fichier config/auth.php. Dans ce fichier, vous pouvez définir différentes gardes et leur configuration. Par exemple, vous trouverez ci-dessous un exemple de fichier config/auth.php qui définit deux gardes : "web" et "admin".

return [

    'guards' => [

        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],

        'admin' => [
            'driver' => 'session',
            'provider' => 'admins',
        ],

    ],

    'providers' => [

        'users' => [
            'driver' => 'eloquent',
            'model' => AppModelsUser::class,
        ],

        'admins' => [
            'driver' => 'eloquent',
            'model' => AppModelsAdmin::class,
        ],

    ],

];

Dans l'exemple ci-dessus, nous pouvons voir que le garde « web » et le garde « admin » utilisent le pilote de session pour l'authentification, où le garde « web » utilise le fournisseur « utilisateurs » pour l'authentification des utilisateurs, tandis que le garde « admin » utilise « admins ». " Fournisseur pour l'authentification de l'administrateur. De plus, nous pouvons également configurer l'URL de redirection par défaut de chaque garde dans le fichier config/auth.php. Par exemple, voici un exemple d'utilisation de l'URL de redirection par défaut :

'guards' => [

        'web' => [
            'driver' => 'session',
            'provider' => 'users',
            'redirect' => '/',
        ],

    ],

Dans l'exemple ci-dessus, nous définissons l'URL de redirection par défaut du garde "web" sur "/", qui est le répertoire racine de l'application. Lorsque l'utilisateur se connecte avec succès, il sera redirigé vers cette URL. De même, vous pouvez modifier l'URL de redirection si nécessaire, par exemple vers le profil ou le panneau de configuration de l'utilisateur. Il vous suffit de modifier l'option « redirection » dans la configuration de Guard par l'URL qui doit être redirigée.

Cependant, si vous avez plusieurs gardes dans votre application, comme les gardes « web » et « admin » dans l'exemple ci-dessus, comment définir l'URL de redirection par défaut ? Dans ce cas, Laravel propose une solution simple qui vous permet de définir facilement l'URL de redirection par défaut pour chaque garde.

Par défaut, Laravel fournit un LoginController dans le fichier app/Http/Controllers/Auth/LoginController.php pour gérer les connexions des utilisateurs. Vous pouvez définir l'URL de redirection par défaut pour chaque garde de ce contrôleur. Par exemple, voici un exemple de modification de l'URL de redirection par défaut pour la garde « web » et la garde « admin » :

<?php

namespace AppHttpControllersAuth;

use AppHttpControllersController;
use IlluminateFoundationAuthAuthenticatesUsers;

class LoginController extends Controller
{
    use AuthenticatesUsers;

    protected $redirectTo = '/';

    public function __construct()
    {
        $this->middleware('guest')->except('logout');
    }

    protected function redirectTo()
    {
        if (auth()->user()->isAdmin()) {
            return '/admin/dashboard';
        } else {
            return '/home';
        }
    }
}

Dans l'exemple ci-dessus, nous remplaçons la méthode redirectTo() dans LoginController et la renvoyons en fonction de la garde de l'utilisateur actuel. Différentes URL de redirection. Si le garde de l'utilisateur actuel est "admin", il sera redirigé vers le panneau de configuration de l'administrateur, sinon il sera redirigé vers la page d'accueil personnelle de l'utilisateur. Vous pouvez modifier l'URL de redirection en fonction de vos besoins.

Il convient de noter que la méthode redirectTo() ne peut être utilisée pour rediriger les utilisateurs que si l'option 'redirect' est définie dans guards. Si vous ne définissez pas l'option « redirection » dans le fichier config/auth.php, vous devez utiliser l'URL de redirection par défaut. De plus, le remplacement de la méthode redirectTo() est intrinsèquement différent de la modification directe de l'option 'redirect'. Dans la méthode redirectTo(), vous pouvez écrire n'importe quel code logique pour obtenir un contrôle précis de l'URL de redirection.

Dans l’ensemble, définir l’URL de redirection de connexion par défaut de Laravel est très simple. Vous pouvez définir cela via le fichier config/auth.php ou la méthode redirectTo() dans LoginController. Si votre application dispose de plusieurs gardes, vous pouvez contrôler finement l'URL de redirection par défaut de chaque garde dans LoginController. Ces méthodes vous donnent plus de contrôle sur l'expérience utilisateur et le flux de votre application, les rendant plus fluides et plus conviviales.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn