ホームページ  >  記事  >  PHPフレームワーク  >  Laravel の認証方法

Laravel の認証方法

PHPz
PHPzオリジナル
2023-04-13 18:12:081220ブラウズ

Laravel は、現在最も人気のある PHP フレームワークの 1 つです。多くの機能が提供されますが、最も一般的に使用されるのはユーザーの認証と認可です。 Laravel は、Laravel アプリケーションに簡単に統合できる、豊富でありながらシンプルな認証システムを提供します。この記事では、Laravel がどのように認証を行うかを紹介します。

Laravel 認証の基本概念

Laravel 認証は、ログイン、登録、ログアウト、その他の操作を処理するために利用可能なルートとメソッドを多数提供します。詳細について説明する前に、Laravel 認証の基本概念を理解する必要があります。

User モデル: Laravel はユーザーを表すために User モデルを使用します。 Laravelでユーザーモデルを作成するのは非常に簡単で、artisanコマンドを実行するだけです: php army make:model User

Guard: Laravelでは、guardは特定の認証を指定するために使用される名前です。 Web や API などのレイヤー。

サービスプロバイダー: サービスプロバイダーは、Laravel フレームワークの最も基本的なコンポーネントの 1 つです。各サービス プロバイダーは、サービスを登録したり、インターフェイスと実装をバインドしたりするために使用されます。

認証プロバイダー: 認証プロバイダーは、認証の実際の実装者です。 Laravel はデフォルトで EloquentAuthenticationProvider を使用します。これは、User モデルを使用してユーザー資格情報を認証します。

Laravel で認証する方法

Laravel 認証の基本概念を理解したので、Laravel で認証する方法の紹介を開始できます。 Laravel での認証にはいくつかの手順があります。

ステップ 1: Guard の設定

Laravel 認証の使用を開始するには、まず config/auth.php ファイルで Guard を設定する必要があります。 Guard を使用すると、Web 認証や API 認証など、アプリケーションでさまざまな認証構成を指定できます。 Laravel は、セッションベースの Web アプリケーション用に次の Guard:

  • web: を事前定義します。
  • api: ステートレス API 用。

Guard の構成は簡単なプロセスです。 config/auth.php ファイルで Guards 配列を見つけて、次の内容を追加します。

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

    'api' => [
        'driver' => 'token',
        'provider' => 'users',
    ],
],

上記のコードでは、web と api という 2 つの Guard を定義します。

ステップ 2: 認証されたユーザー モデルを定義する

Laravel には検証用のユーザー モデルが必要です。 Laravel のデフォルト設定を使用する場合は、User というモデルがすでに存在するため、それを定義する必要はありません。他の場合には、User モデルのテーブルと認証フィールドを指定する必要があります。

protected $table = 'your_user_table_name';

public function getAuthPassword()
{
    return $this->your_password_column_name;
}

ステップ 3: 認証ルートを作成する

web.php ファイルで、一連の認証ルートを簡単に作成できます。このルートのセットは、登録、ログイン、ログアウトなどの操作を提供します。次のコード例は、Laravel で認証ルートを作成する方法を示しています。

Route::get('login', 'Auth\LoginController@showLoginForm')->name('login');
Route::post('login', 'Auth\LoginController@login');
Route::post('logout', 'Auth\LoginController@logout')->name('logout');

ステップ 4: 認証コントローラーを生成する

次に、認証ルートのコントローラーを作成する必要があります。 make:auth Artisan コマンドを使用すると、デフォルトのコントローラとルートをすばやく作成できます。これにより、次のファイルが作成されます:

  • app/Http/Controllers/Auth/LoginController.php
  • app/Http/Controllers/Auth/RegisterController.php
  • app /Http/Controllers/Auth/ResetPasswordController.php
  • app/Http/Controllers/Auth/ForgotPasswordController.php
  • resources/views/auth/login.blade.php
  • resource/views/auth/register.blade.php
  • resources/views/auth/passwords/email.blade.php
  • resources/views/auth/passwords/reset.blade.php

これで、これらのコントローラーとビューで適切なカスタマイズを行うことができます。

ステップ 5: 認証プロバイダーを設定する

AuthenticationProvider は、ユーザーの資格情報を検証するために使用されるクラスです。 Laravel では、EloquentAuthenticationProvider がデフォルトで使用されます。認証プロバイダーのユーザー モデルと認証フィールドを指定します。

protected $model;

public function __construct(User $model)
{
    $this->model = $model;
}

public function retrieveById($identifier)
{
    return $this->model->find($identifier);
}

public function retrieveByCredentials(array $credentials)
{
    return $this->model->where('email', $credentials['email'])->first();
}

public function validateCredentials(UserContract $user, array $credentials)
{
    return Hash::check($credentials['password'], $user->getAuthPassword());
}

上記のコードはデフォルトの EloquentAuthenticationProvider プロバイダーであり、これに基づいてカスタマイズできます。もちろん、独自のプロバイダーを実装することもできます。

ステップ 6: 認証に Auth ファサードを使用する

Laravel では、Auth ファサードを使用してユーザー認証を実装できます。認証検証を使用すると、ユーザーがログインしているか、認証されているかなどを簡単に確認できます。

ログインしたかどうかを検出する

if (Auth::check()) {
    // 已经登录,继续操作
} else {
    // 未登录,跳转到登录页面
    return redirect('login');
}

認証を実行する

$credentials = [
    'email' => $email,
    'password' => $password,
];

if (Auth::attempt($credentials)) {
    // 验证成功
} else {
    // 验证失败
}

ログアウト

Auth::logout();

すべての手順を完了すると、Laravelにユーザー認証を実装できます。 。 Laravel の主要な認証概念とプロセスをマスターしたので、これを使用して、独自のアプリケーションに強力かつシンプルなユーザー認証を提供できます。

以上がLaravel の認証方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。