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

Comment configurer l'authentification multiple dans Laravel 5.6

藏色散人
藏色散人original
2019-01-21 09:24:513440parcourir

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

É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

É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

É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

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',
    ];

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();
    });
 }
//

É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

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');
    }}

É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

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');
    }}

É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');}//

É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;) }}">
//

É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>
//

É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;);
});
//

É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));
  }

É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);
}
//

É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,
        ],
    ],

É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);
}

Étape 15 : Exécuter la migration

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

php artisan migrate

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()

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!

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