Maison > développement back-end > tutoriel php > Comment configurer l'authentification multiple dans Laravel 5.6

Comment configurer l'authentification multiple dans Laravel 5.6

藏色散人
Libérer: 2023-04-04 20:00:02
original
3496 Les gens l'ont consulté

Dans cet article, nous aborderons l'authentification multiple dans Laravel 5.6. L'authentification multiple n'est ici que le processus d'authentification par rapport à plusieurs modèles d'utilisateurs.

Comment configurer l'authentification multiple dans Laravel 5.6

Dans les sections suivantes, nous démontrerons la fonctionnalité d'authentification intégrée de Laravel. Plus précisément, je vais vous montrer comment authentifier à la fois un utilisateur administrateur et un utilisateur régulier.

Étape 1 : Configuration de Laravel

Configurer un projet Laravel à l'aide de Composer.

composer create-project --prefer-dist laravel/laravel project-name
Copier après la connexion

Étape 2 : Configuration de la base de données

Ouvrez le fichier .env et définissez les informations d'identification de la base de données dans le fichier.

DB_DATABASE= database-name
DB_USERNAME= root
DB_PASSWORD= database-password
Copier après la connexion

Étape 3 : Authentification

Pour vous inscrire et vous connecter à l'aide du système d'authentification intégré de Laravel, exécutez simplement la commande suivante :

php artisan make:auth
Copier après la connexion

Étape 4 : Configurer les modèles et les migrations

Pour créer et configurer des modèles et des migrations pour l'administrateur :

php artisan make:model Admin -m
Copier après la connexion

Pour configurer des modèles pour l'administrateur, veuillez allez dans app/Admin.php et mettez à jour le code avec le code suivant :

/**
 * Remove 'use Illuminate\Database\Eloquent\Model;'
 */
use Illuminate\Notifications\Notifiable;
use Illuminate\Foundation\Auth\User as Authenticatable;
class Admin extends Authenticatable
{
    use Notifiable;
// The authentication guard for admin
    protected $guard = 'admin';
     /**
      * The attributes that are mass assignable.
      *
      * @var array
      */
    protected $fillable = [
        'email', 'password',
    ];
     /**
      * The attributes that should be hidden for arrays.
      *
      * @var array
      */
    protected $hidden = [
        'password', 'remember_token',
    ];
Copier après la connexion

Pour configurer la table de migration pour l'administrateur, allez dans database/migration/***_create_admins_table.php et utilisez ce qui suit code Code mis à jour :

//
{
    Schema::create('admins', function (Blueprint $table) {
            $table->increments('id');
            $table->string('email')->unique();
            $table->string('password');
            $table->rememberToken();
            $table->timestamps();
    });
 }
//
Copier après la connexion

Étape 5 : Configurer le contrôleur d'administration

Pour créer un contrôleur pour l'administrateur, exécutez la commande suivante :

php artisan make:controller AdminController
Copier après la connexion

Pour configurer le contrôleur, accédez à app/Http/Controllers/AdminController.php et mettez à jour le code avec le code suivant :

class AdminController extends Controller{    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {        $this->middleware('auth:admin');
    }
    /**
     * Show the application dashboard.
     *
     * @return \Illuminate\Http\Response
     */
    public function index()
    {        return view('admin');
    }}
Copier après la connexion

Étape 6 : Configurer la connexion pour l'administrateur Contrôleurs utilisateur

Pour créer un contrôleur de connexion, exécutez la commande suivante :

php artisan make:controller Auth/AdminLoginController
Copier après la connexion

Pour configurer un contrôleur de connexion, accédez à app/Http/Controllers/Auth/AdminLoginController. php et mettez à jour le code avec le code suivant :

use Illuminate\Http\Request;use App\Http\Controllers\Controller;use Illuminate\Foundation\Auth\AuthenticatesUsers;use Illuminate\Support\Facades\Auth;class AdminLoginController extends Controller{    /**
     * Show the application’s login form.
     *
     * @return \Illuminate\Http\Response
     */
    public function showLoginForm()
    {        return view(’auth.admin-login’);
    }
    protected function guard(){        return Auth::guard('admin');
    }
    
    use AuthenticatesUsers;    /**
     * Where to redirect users after login.
     *
     * @var string
     */
    protected $redirectTo = '/admin/dashboard';    /**
     * Create a new controller instance.
     *
     * @return void
     */
    public function __construct()
    {        $this->middleware('guest:admin')->except('logout');
    }}
Copier après la connexion

Étape 7 : Configurer le contrôleur de connexion pour les utilisateurs normaux

Pour configurer le contrôleur de connexion pour les utilisateurs normaux, veuillez accéder à app/Http/Controllers/Auth/LoginController.php et mettre à jour le code avec le code suivant :

///**
 * Show the application's login form.
 *
 * @return \Illuminate\Http\Response
 */public function showLoginForm(){    return view('auth.login');}//
Copier après la connexion

Étape 8 : Définir la vue de connexion pour l'administrateur

Pour créer et configurer une vue de connexion pour l'administrateur, accédez à resources/views/auth/ et créez un nouveau fichier admin-login.blade.php. Copiez le code depuis resources/views/auth/login.blade.php et collez-le dans un nouveau fichier.

Maintenant, mettez à jour le nouveau fichier avec le contenu suivant :

// 
<div class="card-header">{{ __(&#39;Admin Login&#39;) }}</div>
<div class="card-body">
  <form method="POST" action="{{ route(&#39;admin.login.submit&#39;) }}">
//
Copier après la connexion

Étape 9 : Configurez la vue principale pour l'administrateur

Pour créer et Pour configurer la vue d'accueil, accédez à resources/views/ et créez un nouveau fichier admin-home.blade.php. Copiez le code dans resources/views/home.blade.php et collez-le dans un nouveau fichier.

Mettez maintenant à jour le nouveau fichier avec le contenu suivant :

// 
<div class="card">
   <div class="card-header">Admin Dashboard</div>
//
Copier après la connexion

Étape 10 : Configurez le routage de l'application Web

à acheminer pour votre application Pour configurer une route Web, accédez à routes/web.php et mettez à jour le code avec le code suivant :

//
Route::get(&#39;/&#39;, function () {
    return view(&#39;layouts.app&#39;);
});
Route::prefix(&#39;admin&#39;)->group(function() {
    Route::get(&#39;/login&#39;, &#39;Auth\AdminLoginController@showLoginForm&#39;)->name(&#39;admin.login&#39;);
    Route::post(&#39;/login&#39;, &#39;Auth\AdminLoginController@login&#39;)->name(&#39;admin.login.submit&#39;);
    Route::get(&#39;/home&#39;, &#39;AdminController@index&#39;)->name(&#39;admin.home&#39;);
});
//
Copier après la connexion

Étape 11 : Configurez le gestionnaire d'exceptions

Pour définir le gestionnaire d'exceptions, veuillez accéder à app/Exceptions/Hanler.php et mettre à jour le code avec le code suivant :

//
use Illuminate\Auth\AuthenticationException;
//
//
protected $dontReport = [
     \Illuminate\Auth\AuthenticationException::class,
     \Illuminate\Auth\Access\AuthorizationException::class,
     \Symfony\Component\HttpKernel\Exception\HttpException::class,
     \Illuminate\Database\Eloquent\ModelNotFoundException::class,
     \Illuminate\Session\TokenMismatchException::class,
     \Illuminate\Validation\ValidationException::class,
];
//
//
public function render($request, Exception $exception)
{
    return parent::render($request, $exception);
}
    /**
     * Convert an authentication exception into an unauthenticated response.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  \Illuminate\Auth\AuthenticationException  $exception
     * @return \Illuminate\Http\Response
     */
 protected function unauthenticated($request, AuthenticationException $exception)
 {
    if ($request->expectsJson()) {
     return response()->json([&#39;error&#39; => &#39;Unauthenticated.&#39;],401);
    }
     $guard = array_get($exception->guards(), 0);
      switch ($guard) {
        case &#39;admin&#39;: $login = &#39;admin.login&#39;;
        break;
        default: $login = &#39;login&#39;;
        break;
      }
        return redirect()->guest(route($login));
  }
Copier après la connexion

Étape 12 : Configurer le middleware de redirection

Pour configurer le middleware de redirection après authentification, rendez-vous sur app/Http/Middleware/RedirectIfAuthenticated.php et mettez à jour le code avec le code suivant :

//
public function handle($request, Closure $next, $guard = null)
{
        switch ($guard) {
            case &#39;admin&#39; :
                if (Auth::guard($guard)->check()) {
                    return redirect()->route(&#39;admin.home&#39;);
                }
                break;
            default:
                if (Auth::guard($guard)->check()) {
                    return redirect()->route(&#39;home&#39;);
                }
                break;
        }
     return $next($request);
}
//
Copier après la connexion

Étape 13 : Configurer la configuration de l'authentification

Pour configurer la configuration de l'authentification, rendez-vous sur config/auth.php et mettez à jour le code avec le code suivant :

//
&#39;defaults&#39; => [
        &#39;guard&#39; => &#39;web&#39;,
        &#39;passwords&#39; => &#39;users&#39;,
    ],
&#39;admins&#39; => [
        &#39;driver&#39; => &#39;eloquent&#39;,
        &#39;model&#39; => App\Admin::class,
    ],
//
//
&#39;guards&#39; => [
        &#39;web&#39; => [
            &#39;driver&#39; => &#39;session&#39;,
            &#39;provider&#39; => &#39;users&#39;,
        ],
        &#39;api&#39; => [
            &#39;driver&#39; => &#39;token&#39;,
            &#39;provider&#39; => &#39;users&#39;,
        ],
        &#39;admin&#39; => [
            &#39;driver&#39; => &#39;session&#39;,
            &#39;provider&#39; => &#39;admins&#39;,
        ],
        &#39;admin-api&#39; => [
            &#39;driver&#39; => &#39;token&#39;,
            &#39;provider&#39; => &#39;admins&#39;,
        ],
    ],
//
//
&#39;providers&#39; => [
        &#39;users&#39; => [
            &#39;driver&#39; => &#39;eloquent&#39;,
            &#39;model&#39; => App\User::class,
        ],
       &#39;admins&#39; => [
            &#39;driver&#39; => &#39;eloquent&#39;,
            &#39;model&#39; => App\Admin::class,
        ],
    ],
//
//
&#39;passwords&#39; => [
        &#39;users&#39; => [
            &#39;provider&#39; => &#39;users&#39;,
            &#39;table&#39; => &#39;password_resets&#39;,
            &#39;expire&#39; => 60,
        ],
        &#39;admins&#39; => [
            &#39;provider&#39; => &#39;admins&#39;,
            &#39;table&#39; => &#39;password_resets&#39;,
            &#39;expire&#39; => 15,
        ],
    ],
Copier après la connexion

Étape 14 : Configurer la longueur de chaîne par défaut pour la migration de base de données

Pour définir la longueur de chaîne par défaut pour les migrations de bases de données, accédez à app/Providers/AppServiceProvider.php et mettez à jour votre code avec :

use Illuminate\Support\ServiceProvider;
use Illuminate\Support\Facades\Schema;

//

public function boot(){
    Schema::defaultStringLength(191);
}
Copier après la connexion

Étape 15 : Exécuter la migration

Pour exécuter la migration, entrez la commande suivante :

php artisan migrate
Copier après la connexion

Entrez les identifiants de connexion de l'administrateur à l'aide du patcher :

php artisan tinker

$admin = new App\Admin
$admin->email = &#39;admin@app.com&#39;
$admin->password = Hash::make(’admin-password’)
$admin->save()
Copier après la connexion

J'espère que vous pourrez désormais facilement configurer plusieurs authentifications dans votre projet Laravel.

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal