検索
ホームページPHPフレームワークLaravelLaravelのガードとは何ですか

laravel では、guard はユーザー認証用のプラグインです。guard の役割は、認証を処理して各リクエストを判断し、データベースからデータを読み取ってユーザー入力と比較し、呼び出しが成功したかどうかを判断することです。ログインまたは通過が許可されており、Guard は独自の認証システムを非常に柔軟に構築できます。

Laravelのガードとは何ですか

この記事の動作環境: Windows 10 システム、Laravel バージョン 5.4、Dell G3 コンピューター。

laravelのguard

実はGuardなのかProvideなのかが分かります。特定の機能のためのプラグイン。

彼の役割は、認証を処理して、各リクエストまたは呼び出しがログインされているか、または通過が許可されているかを判断することです。

Guard とは

Laravel/Lumen フレームワークでは、ユーザーのログイン/登録認証は基本的にカプセル化されており、そのまま使用できます。ログイン/登録認証の核心は次のとおりです。

#ユーザーの登録情報をデータベースに保存する (登録)

#データベースからデータを読み取り、ユーザー入力と比較する (認証)

上記の 2 つの手順はログイン/登録の基本です。これらの手順にはデータベース操作が含まれることがわかります。フレームワークの最下層でこれがすでに行われており、多くの状況が考慮されています。たとえば、データユーザー認証用のテーブルはユーザー テーブルではなくユーザー テーブル admin_user、認証フィールドは電子メールではなく電話であるなど、Guard が解決する必要があるその他の問題は、Guard を通じて、使用するデータ テーブルとフィールドなどを指定できます。 Guard は独自の認証システムを非常に柔軟に構築できます。

平たく言えば、次のようなものです。Guard はコミュニティの門番のようなもので、冷酷で人間を認識せず、登録情報のみを認識します。

コミュニティに入る前におじさんが本人確認をする必要があり、認証に失敗した場合はおじさんは入れません。

あなたが徒歩または自転車で入ってくる場合、おじさん 1 はあなたのアクセス カードを確認する必要があります。彼はコミュニティ内のすべての所有者のアクセス カード情報を記録した本を取り出し、あなたのアクセス カード情報がこの中にあるかどうかを確認します。 book;

車で入ってくると、おじさん 2 はすべての所有者のナンバー プレート番号を記録した本からあなたのナンバー プレート番号を確認します。そのため、新しい所有者がその地域に引っ越してきたら、そのことを住民に知らせる必要があります。ドアマンのおじさんにアクセス カード情報やナンバー プレート番号を教えてください。そうでないと、おじさん 2 はあなたを中に入れません。

不動産管理者がコミュニティに入りたい場合、ドアマンのおじさん 3 は登録情報のみを認識します。管理者は管理者アクセス カードを提示し、ドアマンのおじさんは管理者のアクセス カードを記録した帳簿を確認します。情報。

上記は、フレームワークのマルチユーザー認証に対応します:

歩行/自転車に乗っている人 -> アクセス カード

運転している人 -> ナンバー プレート番号

Property Manager-> Access Card

アクセスカードとナンバープレート番号は別の認証方法であり、警備員のおじさんが閲覧した本は別のデータベースのユーザー情報に対応しています。その方が分かりやすいんじゃないでしょうか。

Lumen/Laravelは非常に柔軟な認証をミドルウェア形式で提供しており、簡単な設定で複数の認証を切り替えることができます。

ワークフロー図は次のとおりです。


Laravelのガードとは何ですか図からわかるように、Guard には次の 3 つの部分が含まれます。

    Guard 実装自体
  • #ユーザー プロバイダー ユーザー プロバイダー、どのデータ テーブルとその取得方法 (雄弁/データベース) を指定します
  • Authenticatable インターフェイスは、認証できるものを規定し、それを実装するインターフェイスです。
幅広い知識:

Guard 私の理解では、これはユーザー認証に似たものであるはずです。

config/auth.php にはガードを設定するためのパラメータがあり、Web と API が 2 つのガードであることがわかります。

日常のビジネスでは、API はフロントエンド ユーザーの操作に近いかもしれませんが、Web はバックエンド ユーザーの操作に近いかもしれません。

デフォルト設定はユーザーのプロバイダーを指します。

/*
    | Authentication Guards
    |认证关卡
    | Next, you may define every authentication guard for your application. Of course, a great default configuration has been defined for you here which uses session storage and the Eloquent user provider.
    |接下来,你可能要为你的应用定义每个认证关卡。当然,已经为你定一了一个很不错的默认配置。这里会使用会话储存和用户模型
    | All authentication drivers have a user provider. This defines how the users are actually retrieved out of your database or other storage mechanisms used by this application to persist your user's data.
    |所有的认证驱动都有一个用户提供者。这里定义了怎么实际上怎么从你的数据库或者其他储存机制中取出用户。以便应用开保持你的用户数据
    | Supported: "session", "token"
    |可选驱动:"session", "token"
    */
'guards' => [
        'web' => [
            'driver' => 'session',
            'provider' => 'users',
        ],
        'api' => [
            'driver' => 'token',
            'provider' => 'users',
        ],
    ],

次に、プロバイダーの構成を見てみましょう。

  /*
    | User Providers
    |用户提供者
    | If you have multiple user tables or models you may configure multiple sources which represent each model / table. These sources may then be assigned to any extra authentication guards you have defined.
    | 如果你有多个用户表或用户模型,你可以配置多个代表用户表或模型的资源。这些资源可能被分配给应用中你定义的其他认证关卡
    | Supported: "database", "eloquent"
    |
    */
 'providers' => [
        'users' => [
            'driver' => 'eloquent',
            'model' => App\User::class,
        ],
        // 'users' => [
        //     'driver' => 'database',
        //     'table' => 'users',
        // ],
    ],

プロバイダーには、先ほど見たユーザー設定があります。通常の状況ではフロントエンドユーザーとバックエンドユーザーは別々に動作するため、これはlaravelを設定するためのユーザーグループです。したがって、ここで新しい管理者ユーザー グループを作成し、構成できます。デフォルトでは、デフォルトではユーザーのみが使用されます。

各ユーザー グループに対応するパスワード操作は異なる必要があるため、ここでもパスワード設定があります。

  /*
    | Resetting Passwords
    | 密码重置
    | You may specify multiple password reset configurations if you have more than one user table or model in the application and you want to have separate password reset settings based on the specific user types.
    | 如果你有多个用户模型或表,并且想对不同用户类型有特定的密码重置,则可以配置多个特定的重置密码
    | The expire time is the number of minutes that the reset token should be considered valid. This security feature keeps tokens short-lived so they have less time to be guessed. You may change this as needed.
    |这个获取时间是令牌过期的分钟数,这个安全措施可以保证令牌保持段时间有效,因此有更少的时间被破解。你可以按照需要更改。
    */
    'passwords' => [
        'users' => [
            'provider' => 'users',
            'table' => 'password_resets',
            'expire' => 60,
        ],
    ],

通常、ログイン ユーザー、またはユーザーがログインしているかどうかを検出するには、Auth::check() を使用します。これは、デフォルト設定を使用すると、ガードが自動的にユーザーとして設定されるためです。

  /*
    | Authentication Defaults
    | 默认认证配置
    | This option controls the default authentication "guard" and password reset options for your application. You may change these defaults as required, but they're a perfect start for most applications.
    | 这个就是应用的默认认证关卡个重置密码,你可以按自己要求更改。但这是最适合一个新应用的配置
    */
    'defaults' => [
        'guard' => 'web',
        'passwords' => 'users',
    ],

Web ガードはユーザー モデルを指します。

しかし、フロントエンドとバックエンドという 2 つのユーザー グループがある場合、それを確認するにはどうすればよいでしょうか?

Auth::check() は、ユーザーがログインしているかどうかを判断するメソッドです。デフォルトのユーザー システムが使用されている場合は、この方法で使用しても問題ありません。

ただし、2 つのユーザー グループを使用する場合は、次のようにする必要があります:

Auth::guard('api')->check() を使用して、フロントエンドがユーザーは Auth::guard('web')->check() にログインしています。バックグラウンド ユーザーがログインしているかどうかを判断するために使用されます

したがって、デフォルト以外のユーザー グループを使用する場合は、それをガード付きで指定する必要があります。

つまり、私たちが通常使用するのは、実際にはデフォルトの設定です。すべてを記述するには、Auth::guard('web)->check() となるはずです。

[関連する推奨事項: laravel ビデオチュートリアル ]

以上がLaravelのガードとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
Laravelのバックエンド機能:データベース、ロジックなどLaravelのバックエンド機能:データベース、ロジックなどApr 14, 2025 am 12:04 AM

Laravelは、バックエンド開発で強く機能し、Eloquentorm、コントローラー、サービスクラスを介してデータベース操作を簡素化し、ビジネスロジックを処理し、キュー、イベント、その他の機能を提供します。 1)Eloquentormは、モデルを介してデータベーステーブルをマップしてクエリを簡素化します。 2)ビジネスロジックは、モジュール性と保守性を向上させるために、コントローラーとサービスクラスで処理されます。 3)キューシステムなどのその他の機能は、複雑なニーズの処理に役立ちます。

Laravelの汎用性:単純なサイトから複雑なシステムまでLaravelの汎用性:単純なサイトから複雑なシステムまでApr 13, 2025 am 12:13 AM

Laravel Developmentプロジェクトは、さまざまなサイズと複雑さのニーズに合う柔軟性とパワーのために選択されました。 Laravelは、ルーティングシステム、Eloquentorm、Artisan Command Lineおよびその他の機能を提供し、簡単なブログから複雑なエンタープライズレベルのシステムへの開発をサポートしています。

Laravel(PHP)vs。Python:開発環境とエコシステムLaravel(PHP)vs。Python:開発環境とエコシステムApr 12, 2025 am 12:10 AM

開発環境とエコシステムにおけるLaravelとPythonの比較は次のとおりです。1。Laravelの開発環境は簡単で、PHPと作曲家のみが必要です。 Laravelforgeなどの豊富な範囲の拡張パッケージを提供しますが、拡張パッケージのメンテナンスはタイムリーではない場合があります。 2。Pythonの開発環境もシンプルで、PythonとPIPのみが必要です。エコシステムは巨大で複数のフィールドをカバーしていますが、バージョンと依存関係の管理は複雑な場合があります。

LaravelとThe BackEnd:Webアプリケーションロジックの電源LaravelとThe BackEnd:Webアプリケーションロジックの電源Apr 11, 2025 am 11:29 AM

Laravelはバックエンドロジックでどのように役割を果たしますか?ルーティングシステム、Eloquentorm、認証と承認、イベントとリスナー、パフォーマンスの最適化を通じてバックエンド開発を簡素化および強化します。 1.ルーティングシステムにより、URL構造の定義とリクエスト処理ロジックが可能になります。 2.Eloquentormは、データベースの相互作用を簡素化します。 3.認証および承認システムは、ユーザー管理に便利です。 4.イベントとリスナーは、ゆるく結合したコード構造を実装します。 5.パフォーマンスの最適化により、キャッシュとキューイングを通じてアプリケーションの効率が向上します。

Laravelがそんなに人気があるのはなぜですか?Laravelがそんなに人気があるのはなぜですか?Apr 02, 2025 pm 02:16 PM

Laravelの人気には、単純化された開発プロセスが含まれ、快適な開発環境を提供し、豊富な機能が提供されます。 1)Rubyonrailsの設計哲学を吸収し、PHPの柔軟性を組み合わせています。 2)Eloquentorm、Bladeテンプレートエンジンなどのツールを提供して、開発効率を向上させます。 3)そのMVCアーキテクチャと依存関係噴射メカニズムにより、コードがよりモジュール化され、テスト可能になります。 4)キャッシュシステムやベストプラクティスなどの強力なデバッグツールとパフォーマンス最適化方法を提供します。

どちらが良いのか、DjangoとLaravel?どちらが良いのか、DjangoとLaravel?Mar 28, 2025 am 10:41 AM

DjangoとLaravelはどちらもフルスタックのフレームワークです。 DjangoはPython開発者や複雑なビジネスロジックに適していますが、LaravelはPHP開発者とエレガントな構文に適しています。 1.DjangoはPythonに基づいており、迅速な発展と高い並行性に適した「バッテリーコンプリート」哲学に従います。 2. LaravelはPHPに基づいており、開発者エクスペリエンスを強調しており、小規模から中規模のプロジェクトに適しています。

どちらがより良いPHPですか、それともLaravelですか?どちらがより良いPHPですか、それともLaravelですか?Mar 27, 2025 pm 05:31 PM

LaravelはPHPベースのフレームワークであるため、PHPとLaravelは直接匹敵するものではありません。 1.PHPは、シンプルで直接的であるため、小規模プロジェクトや迅速なプロトタイピングに適しています。 2。LARAVELは、豊富な機能とツールを提供するため、大規模なプロジェクトや効率的な開発に適していますが、急な学習曲線があり、純粋なPHPほど良くない場合があります。

Laravelはフロントエンドですか、それともバックエンドですか?Laravelはフロントエンドですか、それともバックエンドですか?Mar 27, 2025 pm 05:31 PM

laravelisabackendframeworkbuiltonphp、designforwebapplicationdevelopment.itfocusonserver-sidelogic、databasemanagement、およびapplicationStructure、およびbueithedendtechnologiesvue.jsorreactforfull-stackdevelymentと統合されていること。

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

WebStorm Mac版

WebStorm Mac版

便利なJavaScript開発ツール

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。