Laravelのガードとは何ですか
laravel では、guard はユーザー認証用のプラグインです。guard の役割は、認証を処理して各リクエストを判断し、データベースからデータを読み取ってユーザー入力と比較し、呼び出しが成功したかどうかを判断することです。ログインまたは通過が許可されており、Guard は独自の認証システムを非常に柔軟に構築できます。
この記事の動作環境: 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は非常に柔軟な認証をミドルウェア形式で提供しており、簡単な設定で複数の認証を切り替えることができます。
ワークフロー図は次のとおりです。
図からわかるように、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', // ], ],
/* | 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, ], ],
/* | 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', ],
したがって、デフォルト以外のユーザー グループを使用する場合は、それをガード付きで指定する必要があります。
つまり、私たちが通常使用するのは、実際にはデフォルトの設定です。すべてを記述するには、Auth::guard('web)->check() となるはずです。
[関連する推奨事項: laravel ビデオチュートリアル ]
以上がLaravelのガードとは何ですかの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









Laravel 9 と CodeIgniter 4 の最新バージョンでは、更新された機能と改善が提供されます。 Laravel9はMVCアーキテクチャを採用しており、データベース移行、認証、テンプレートエンジンなどの機能を提供します。 CodeIgniter4 は、HMVC アーキテクチャを使用してルーティング、ORM、およびキャッシュを提供します。パフォーマンスの面では、Laravel9 のサービスプロバイダーベースの設計パターンと CodeIgniter4 の軽量フレームワークにより、優れたパフォーマンスが得られます。実際のアプリケーションでは、Laravel9 は柔軟性と強力な機能を必要とする複雑なプロジェクトに適しており、CodeIgniter4 は迅速な開発や小規模なアプリケーションに適しています。

Laravel と CodeIgniter のデータ処理機能を比較します。 ORM: Laravel はクラスとオブジェクトのリレーショナル マッピングを提供する EloquentORM を使用しますが、CodeIgniter は ActiveRecord を使用してデータベース モデルを PHP クラスのサブクラスとして表します。クエリビルダー: Laravel には柔軟なチェーンクエリ API がありますが、CodeIgniter のクエリビルダーはよりシンプルで配列ベースです。データ検証: Laravel はカスタム検証ルールをサポートする Validator クラスを提供しますが、CodeIgniter には組み込みの検証関数が少なく、カスタム ルールの手動コーディングが必要です。実践例:ユーザー登録例はLarを示しています

初心者にとって、CodeIgniter は学習曲線が緩やかで機能は少ないですが、基本的なニーズはカバーしています。 Laravel は幅広い機能セットを提供しますが、学習曲線はわずかに急になります。パフォーマンスの点では、Laravel と CodeIgniter はどちらも良好なパフォーマンスを示します。 Laravel にはより広範なドキュメントとアクティブなコミュニティ サポートがあり、CodeIgniter はよりシンプルで軽量で、強力なセキュリティ機能を備えています。ブログアプリケーションを構築する実際のケースでは、Laravel の EloquentORM を使用するとデータ操作が簡素化されますが、CodeIgniter ではより手動の構成が必要になります。

Laravel - アーティザン コマンド - Laravel 5.7 には、新しいコマンドを処理およびテストするための新しい方法が付属しています。これには職人コマンドをテストする新しい機能が含まれており、そのデモについては以下で説明します。

大規模プロジェクト用のフレームワークを選択する場合、Laravel と CodeIgniter にはそれぞれ独自の利点があります。 Laravel はエンタープライズレベルのアプリケーション向けに設計されており、モジュール設計、依存関係の注入、強力な機能セットを提供します。 CodeIgniter は、速度と使いやすさを重視した、小規模から中規模のプロジェクトに適した軽量フレームワークです。複雑な要件と多数のユーザーを伴う大規模なプロジェクトには、Laravel のパワーとスケーラビリティがより適しています。単純なプロジェクトやリソースが限られている状況では、CodeIgniter の軽量で迅速な開発機能がより理想的です。

マイクロサービス アーキテクチャは、PHP フレームワーク (Symfony や Laravel など) を使用してマイクロサービスを実装し、RESTful 原則と標準データ形式に従って API を設計します。マイクロサービスはメッセージ キュー、HTTP リクエスト、または gRPC を介して通信し、監視とトラブルシューティングに Prometheus や ELKStack などのツールを使用します。

小規模なプロジェクトの場合、Laravel は強力な機能とセキュリティを必要とする大規模なプロジェクトに適しています。 CodeIgniter は、軽量さと使いやすさを必要とする非常に小規模なプロジェクトに適しています。

Laravel の Blade と CodeIgniter の Twig テンプレート エンジンを比較し、プロジェクトのニーズと個人的な好みに基づいて選択してください。Blade は MVC 構文に基づいており、適切なコード編成とテンプレートの継承を促進します。 Twig は、柔軟な構文、強力なフィルター、拡張サポート、セキュリティ サンドボックスを提供するサードパーティ ライブラリです。
