ホームページ PHPフレームワーク ThinkPHP ThinkPHP6 のフロントエンドミドルウェアとバックエンドミドルウェアの違いは何ですか?

ThinkPHP6 のフロントエンドミドルウェアとバックエンドミドルウェアの違いは何ですか?

May 06, 2020 pm 04:12 PM
thinkphp6

前回の例では、ミドルウェアの定義を学び、ミドルウェアの意味を理解した後、マニュアルをめくってみると、「プレミドルウェア」と「ポストミドルウェア」という別のマニュアルが見つかりました。両者の違いは何ですか?

1. 定義の違い。

プレミドルウェアとポストミドルウェアの定義が異なることは、公式サイトのマニュアルを見れば容易にわかりますので、以下に見てみましょう。

ミドルウェア以前の定義:

<?php
namespace app\middleware;
class Before
{
    public function handle($request, \Closure $next)
    {
        // 添加中间件执行代码
        return $next($request);
    }
}
ログイン後にコピー

ミドルウェア以降:

<?php
namespace app\middleware;
class After
{
    public function handle($request, \Closure $next)
    {
        $response = $next($request);
        // 添加中间件执行代码
        return $response;
    }
}
ログイン後にコピー

詳しく見てみると、最終的には、この 2 つは実行コードと $next であることがわかりました。 ($request) 順序の問題、プレミドルウェアとポストミドルウェアの鍵となるのはこの順序です。

2. $request は異なります。

次のコードをプレミドルウェアとポストミドルウェアでそれぞれ出力できます。

halt($request);
ログイン後にコピー

慎重に比較したところ、プレミドルウェアのコントローラーとメソッドが同じであることがわかりました。ミドルウェアが空の場合、ポストミドルウェアはコントローラー名とメソッドを取得できます。したがって、現在アクセスされているコントローラーとメソッドを取得したい場合は、ポストミドルウェアを使用して解決する必要があります。

ThinkPHP6 のフロントエンドミドルウェアとバックエンドミドルウェアの違いは何ですか?ThinkPHP6 のフロントエンドミドルウェアとバックエンドミドルウェアの違いは何ですか?

#3. ミドルウェアがログイン シナリオを傍受します。

まず、公式 Web サイトでミドルウェアの定義を見てみましょう:

ミドルウェアは主に、アプリケーションの HTTP リクエストをインターセプトまたはフィルターし、実行するために使用されます。必要な事務処理を行います。

公式 Web サイトの定義を見て、友人はログイン傍受にはミドルウェアを使用するのが本当に最善であると考えるかもしれません。しかし、プレミドルウェアを使用すべきでしょうか、それともポストミドルウェアを使用すべきでしょうか?

<?php
namespace app\middleware;
class After
{
    public function handle($request, \Closure $next)
    {
        $response = $next($request);
        // 添加中间件执行代码
        if(empty(&#39;session&#39;)){
            echo &#39;登录不合法&#39;;
            //跳转到登录页面
        }
        return $response;
    }
}
ログイン後にコピー

バックエンド ホーム ページ:


public function index(){
    echo &#39;后台首页&#39;;
}
ログイン後にコピー
実行結果から、ログイン ジャンプ前でもインデックス メソッドを実行でき、コンテンツを出力できることがわかります。

したがって、ポストミドルウェアはログインシナリオでは使用できません。ログインを傍受するにはプレミドルウェアが最適です。このとき、現在のアクセスがログインであるかどうかも判断する必要があります。ログインの場合は、 、多くのリダイレクトが発生するため、友人はこれを適切に処理する必要があります。

上記はプレミドルウェアとポストミドルウェアの紹介ですが、実際のプロジェクトでは、実際のビジネスロジックに基づいてプレミドルウェアを使用するかポストミドルウェアを使用するかを決定します。

以上がThinkPHP6 のフロントエンドミドルウェアとバックエンドミドルウェアの違いは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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

ホット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ヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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