ThinkPHP6プロジェクトの基本操作(14.ミドルウェア処理ログインプロセスの実際の部分)

1つは、ミドルウェアを定義する

<?php

namespace app\middleware;

class Check
{
    
    
    public function handle($request, \Closure $next)
    {
    
    
        if ($request->param('name') == 'think') {
    
    
            return redirect('index/think');
        }

        return $next($request);
    }
}

ミドルウェアクラスには任意の名前を付けることができます。ミドルウェアのエントリ実行メソッドはメソッドである必要がhandleあり、最初のパラメーターはRequestオブジェクトで、2番目のパラメーターは1闭包です。

2つ、前後のミドルウェア

ミドルウェアが特定の操作が要求される前に実行されるか後に実行されるかは、ミドルウェア自体の定義に完全に依存します。
以下は、事前動作を備えたミドルウェアです。

<?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;
    }
}

3、ミドルウェアを登録する

新しいミドルウェアが分割され全局中间件应用中间件(多应用模式下有效)路由中间件そして控制器中间件四つのグループ。実行の順序は次のとおりです。

グローバルミドルウェア->アプリケーションミドルウェア->ルーティングミドルウェア->コントローラミドルウェア

1.グローバルミドルウェア

グローバルミドルウェアは、次の方法を使用してappディレクトリの下のmiddleware.phpファイル定義さます。

<?php

return [
	\app\middleware\Auth::class
];

ミドルウェアの登録には完全なクラス名を使用する必要があります。ミドルウェアのエイリアス(またはグループ)が定義されている場合は、直接使用できます。グローバルミドルウェアの実行順序は定義順序です。

2.アプリケーションミドルウェア

マルチアプリケーションモードを使用する場合、アプリケーションミドルウェア定義がサポートされます。アプリケーションディレクトリの下にmiddleware.phpファイルを直接追加できます。定義方法はグローバルミドルウェア定義と同じですが、アプリケーションでのみ有効になります。

3.ルーティングミドルウェア

最も一般的に使用されるミドルウェアの登録方法は、ルーティングミドルウェアを登録することです。

Route::rule('hello/:name','hello')->middleware(\app\middleware\Auth::class);

複数のミドルウェアの登録をサポートします。

Route::rule('hello/:name','hello')->middleware([\app\middleware\Auth::class, \app\middleware\Check::class]);

4.コントローラーミドルウェア

コントローラのミドルウェアを定義するためのサポート。コントローラでmiddleware属性を定義するだけで済みます。次に例を示します。

<?php
namespace app\controller;

class Index
{
    
    
    protected $middleware = ['auth'];

    public function index()
    {
    
    
        return 'index';
    }

    public function hello()
    {
    
    
        return 'hello';
    }
}

authミドルウェアは、インデックスコントローラが実行されるときに呼び出され、完全な名前名定義もサポートされます。

5.ビルトインミドルウェア

ミドルウェア 説明
think \ middleware \ AllowCrossDomain クロスドメインリクエストのサポート
think \ middleware \ CheckRequestCache リクエストキャッシュ
think \ middleware \ LoadLangPack 多言語ローディング
think \ middleware \ SessionInit Session 初期化
think \ middleware \ FormTokenCheck フォームトークン

これらの組み込みミドルウェアは、デフォルトでは定義されていません。middleware.phpこれらのミドルウェアは、アプリケーションファイル、ルート、またはコントローラー定義できます。使用する必要がない場合は、定義をキャンセルしてください。

第四に、ミドルウェアの使用-バックグラウンドログインページジャンププロセス

ここに写真の説明を挿入
バックグラウンドホームページにアクセスするときに、すでにログインしている(セッションが記録されている)場合は、注意を入力できます。そうでない場合は、ログインページに戻ることができます。バックグラウンドログインページにアクセスしている場合は、すでにログインしている(セッションが記録されている)場合は、直接ホームページにジャンプします。それ以外の場合は、ログインページに入ります。 。

1.認証ミドルウェアを作成します

admin作成しmiddlewareたフォルダのアプリケーションのフォルダを作成し、Auth.phpミドルウェアファイルを:

<?php

namespace app\admin\middleware;
use think\Response;

class Auth
{
    
    
    public function handle($request, \Closure $next){
    
    
        // 前置中间件
        if(empty(session(config("admin.session_admin"))) && !preg_match("/login/",$request->pathinfo()) ){
    
    
            return redirect(url('login/index'));
        }
        if(!empty(session(config("admin.session_admin"))) && preg_match("/login\/index/",$request->pathinfo())){
    
    
            return redirect(url('index/index'));
        }

        $response = $next($request);
        // 后置中间件
        return $response;
    }

    public function end(Response $response){
    
    

    }
}

admin.session_adminこれは、admin / configフォルダーの下の構成ファイルで定義されています:
admin / config / admin.php

<?php
return [
    'session_admin' => 'adminUser'
];

2.アプリケーションミドルウェアを登録します

adminアプリケーションディレクトリに作成ますmiddleware.php

<?php
return [
    \think\middleware\SessionInit::class,
    app\admin\middleware\Auth::class
];

おすすめ

転載: blog.csdn.net/zy1281539626/article/details/110881356