ホームページ > PHPフレームワーク > Laravel > Laravelのガードとは何ですか

Laravelのガードとは何ですか

WBOY
リリース: 2022-06-02 17:54:25
オリジナル
3687 人が閲覧しました

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート